Stellen Sie sich einen Brandstifter vor, der durch die Stadt läuft und seine Opfer nach einem ganz bestimmten Muster auswählt (oder stellen Sie sich eine Biene vor, die durch den Garten fliegt und ihre Blumen pflückt, um sie nach einem ganz bestimmten Muster zu pollen ). Angenommen, die Stadt ist eine N × N- Matrix, wobei N eine ganze Zahl größer oder gleich 2 ist . Der Brandstifter beginnt in der oberen linken Ecke und setzt nacheinander die M- Punkte des Hauses vor sich (wobei M die Nummer des Hauses ist, in dem er sich gerade befindet), während er die Richtung ändert, in die er sich nach jedem Brand bewegt, in der angegebenen Reihenfolge Osten ⟶ Süden ⟶ Westen ⟶ Norden ⟶ Osten ⟶ Süden ... und so weiter. Das Wiegenliedder Brandstifter ist der Wert von M , der sie dazu bringt, die Stadt zu verlassen (dh das letzte Haus, das sie besuchen, bevor sie den Greuel stoppen). Dies ist anhand eines Beispiels viel einfacher zu verstehen. Nehmen Sie zum Beispiel die folgende Matrix:
3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Wir beginnen in der oberen linken Ecke, also ist M = 3 (
X
markiert die aktuelle und vorherige Position des Brandstifters):X 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Gemäß der bekannten Ordnung, geht es zunächst nach Osten M (3) Punkte und landet auf einem 2 so M entsprechend ändert:
X 2 3 X 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Dann geht es nach Süden 2 Spots und M ist jetzt 1 :
X 2 3 X 7 3 1 4 1 6 2 5 3 X 1 4 4 3 2 4 1 1 1 1 1
- Jetzt rückt es 1 Punkt nach Westen und M wird 3 :
X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1
- Nachdem es sich 3 Punkte nach Norden bewegt hat , verlässt es die Stadt! Deshalb ist 3 das Wiegenlied dieses Brandstifters:
X X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1
Wenn Sie eine N × N- Matrix haben (Sie können optional auch N als Eingabe verwenden), finden Sie das Wiegenlied des Brandstifters. Ich habe ein Programm geschrieben, mit dem Sie weitere Testfälle generieren und den Weg des Brandstifters visualisieren können: Probieren Sie es online aus!
- Sie können davon ausgehen , dass der arsonist hat ein Schlaflied hat (das heißt, es tatsächlich die Matrix heraus kann).
- Die Matrix enthält der Einfachheit halber nur positive ganze Zahlen, die kleiner oder gleich 9 (Ziffern) sind. Lösungen, die mit jeder positiven Ganzzahl umgehen, sind ausdrücklich erwünscht.
- Beachten Sie, dass der Brandstifter an einer Stelle landen kann , an der er sich bereits niedergebrannt hat, für den Fall, dass das Gefühl, in das er sich bewegt, sich vom ersten Mal unterscheidet. Nehmen Sie in einem solchen Szenario einfach den Wert dieses Elements und verschieben Sie es wie gewohnt.
- Sie können in jeder Programmiersprache antreten und über jede Standardmethode Eingaben und Ausgaben vornehmen. Beachten Sie jedoch, dass diese Lücken standardmäßig verboten sind. Dies ist Codegolf , daher gewinnt die kürzeste Übermittlung (in Bytes) für jede Sprache .
Testfälle
------------- 9 2 3 1 7 2 8 7 6 Wiegenlied: 9 ------------- 2 1 2 1 3 1 1 2 1 2 2 1 1 1 1 3 Wiegenlied: 2 ------------- 3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 Wiegenlied: 3 ------------- 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 Wiegenlied: 2 ------------- 3 2 1 2 1 1 1 2 3 2 3 2 1 1 2 1 1 1 3 1 2 3 1 1 1 1 1 1 4 5 2 3 1 1 1 1 2 1 2 1 2 2 1 2 2 3 2 1 2 Wiegenlied: 3 -------------
Die Matrizen in einem anderen Format:
[[9, 2, 3], [1, 7, 2], [8, 7, 6]] [[2, 1, 2, 1], [3, 1, 1, 2], [1, 2, 2, 1], [1, 1, 1, 3]] [[3, 2, 3, 2, 7], [3, 1, 4, 1, 6], [2, 5, 3, 1, 1], [4, 4, 3, 2, 4], [ 1, 1, 1, 1, 1]] [[1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2]] [[3, 2, 1, 2, 1, 1, 1], [2, 3, 2, 3, 2, 1, 1], [2, 1, 1, 1, 3, 1, 2], [ 3, 1, 1, 1, 1, 1], [4, 5, 2, 3, 1, 1, 1], [1, 2, 1, 2, 1, 2, 2], [1, 2, 2, 3, 2, 1, 2]]
Der fünfte Testfall ist sehr interessant zu visualisieren .