Die Info
Die Zahlen 1 bis 9 repräsentieren jeweils eine Zelle in der Nachbarschaft von Moore , wobei 5 die zentrale Zelle ist. So:
123
456
789
1={-1,-1} 2={-1, 0} 3={-1, 1}
4={ 0,-1} 5={ 0, 0} 6={ 0, 1}
7={ 1,-1} 8={ 1, 0} 9={ 1, 1}
Die Herausforderung
Sie können Eingaben über STDIN, ARGV oder Funktionsargument vornehmen und entweder das Ergebnis zurückgeben oder an STDOUT drucken. Die Eingabe ist ein N x N-Gitter (Torustopologie, dh wenn x oder y <1 ist, dann ist x oder y = N, und wenn x oder y> N, dann ist x oder y = 1), und Ihr Programm muss eine Interaktion davon ausgeben Raster durch Ersetzen jeder Zelle durch den Wert in der Moore's Neighborhood-Zelle.
Beispiel Eingabegitter (2 x 2):
13
79
Ausgabe:
97
31
Erläuterung:
Ab Position 1,1 haben wir den Wert 1, da Wert 1 = {- 1, -1}, müssen wir 1 + (- 1), 1 + (- 1) = 0,0 abrufen. Und weil es ein Torus 0,0 ist, wickeln wir uns um N. Also rufen wir den Zellenwert an Position 1,1 (1) mit dem Zellenwert an Position 2,2 (9) ab.
Für die nächste Zelle 1,2 haben wir den Wert 3 (= -1, 1), also 1 + (- 1), 2 + (1) = 0,3. Wraps um 2,1, was Wert 7 ist.
Der nächste Zellenwert bei 2,1 ist 7 (= 1, -1), also 2+ (1), 1 + (- 1) = 3,0. Wraps um 1,2, was Wert 3 ist.
Der nächste Zellenwert bei 2,2 ist 9 (= 1, 1), also 2+ (1), 2 + (1) = 3,3. Wraps um 1,1, was Wert 1 ist.
Mehr Beispiele
Eingabegitter (3 x 3):
123
456
789
Erwartete Ausgabe:
987
654
321
Eingabegitter (5 x 5):
77497
81982
32236
96336
67811
Erwartete Ausgabe:
28728
37337
11923
73369
77433
Schlussbemerkungen
Wenn Sie Fragen haben, zögern Sie nicht zu kommentieren. Dies ist eine Code-Golf-Herausforderung, der kürzeste Code gewinnt!
Antworten:
APL (33)
APL wurde dafür gemacht . Dies ist eine Funktion, die das Eingangsraster als N-mal-N-Matrix verwendet und das Ausgangsraster als N-mal-N-Matrix zurückgibt.
Prüfung:
quelle
Python, 174
Python wurde nicht dafür gemacht ... APL war!
quelle
Python, 105
Nimmt eine Liste von Listen und gibt sie zurück:
Nimmt eine Zeichenfolge (148 Zeichen) und gibt sie zurück:
quelle
MATLAB - 121 Bytes
MATLAB wurde etwas weniger dafür gemacht als APL, aber etwas mehr dafür als Python. ;)
Testausgabe
quelle