Die Herausforderung
Wenn ein Zahlenraster gegeben ist (10 <= N <= 99), wird die Zahl mit der höchsten Summe der vier angrenzenden Zahlen zurückgegeben. Das sind die Zahlen über, unter, rechts und links von der Zahl, aber nicht selbst.
- Die Zahl selbst zählt nicht, nur die vier Nachbarn.
- Eine Zahl am Rand sollte so behandelt werden, als wäre die fehlende Zahl eine 0.
- Ich werde den Test so gestalten, dass Krawatten vermieden werden.
- Zahlen werden nicht wiederholt.
- Das ist Code-Golf .
Beispiel
Gegeben
56 98 32 96
12 64 45 31
94 18 83 71
Rückkehr
18
Ein echter Test
Gegeben
98 95 67 66 57 16 40 94 84 37
87 14 19 34 83 99 97 78 50 36
18 44 29 47 21 86 24 15 91 61
60 41 51 26 10 58 11 62 55 71
42 85 56 12 46 81 93 65 49 77
89 13 74 39 54 76 92 33 82 90
96 88 70 79 80 28 25 20 75 68
38 63 17 72 53 48 73 30 45 69
64 35 32 31 23 43 22 52 27 59
Rückkehr
13
Gegeben
82 43 79 81 94 36 17 64 58
24 52 13 87 70 18 28 61 69
16 99 75 21 50 44 89 90 51
49 80 63 31 54 65 41 55 38
67 91 76 78 23 86 83 14 73
46 68 62 77 34 48 20 74 10
33 35 26 97 59 66 25 37 32
12 92 84 27 85 56 22 40 45
96 15 98 53 39 30 88 71 29
60 42 11 57 95 19 93 72 47
Rückkehr
15
Antworten:
MATL ,
20151312 Bytes5 Bytes dank Emigna, 2 dank Giuseppe und ein weiterer dank Luis Mendo.
Probieren Sie es online!
Erläuterung
quelle
APL (Dyalog Unicode) ,
3127262423 Byte SBCS-2 dank Kühe quaken. -1 danke an ngn.
Anonyme implizite Präfixfunktion. Nimmt eine Matrix als Argument. Nimmt an
⎕IO
( I ndex O rigin) zu sein0
, was auf vielen Systemen Standard ist.Probieren Sie es online!
,
Ravel (Flatten) die Eingabe{
…}⊃
Wählen Sie ein Element aus, das dem Ergebnis der folgenden Funktion entspricht:⊢⍵
Ergib das Argument (trennt sich3 3
von⍵
)…
⌺3 3
Wende die folgende Funktion auf jede 3-mal-3-Nachbarschaft an:⊢∘,
ignoriere die Randinformationen zugunsten der verwüsteten (abgeflachten) Nachbarschaft(
…)
Wenden auf diese die folgende implizite Funktion an-/
die alternierende Summe (wörtlich rechtsassoziativ minus Reduktion)+/-
subtrahiere das von der Summe (das ergibt die Summe aller anderen Elemente),
ravel (flatten) dass (die Nachbarschaft summiert)⍒
produzieren die Indizes, die das sortieren würden⊃
wähle den ersten (dh den Index der höchsten Summe)quelle
{⊃⍒,{+/1↓⍉4 2⍴⍵}⌺3 3⊢⍵}⊃,
? Bearbeiten: oder sogar{⊃⍒,{⊢/+⌿4 2⍴⍵}⌺3 3⊢⍵}⊃,
{⊃⍒,(+/--/)⊢∘,⌺3 3⊢⍵}⊃,
Jelly , 22 Bytes
Probieren Sie es online!
Nicht eingebaute Faltungsfunktionen wie MATL und Dyalog Wenn Sievergessen, dass Ihre Sprache eingebaute Faltungsfunktionen enthält (danke @dylnan), tut das weh, aber auch dankŒM
und können wir das in Ordnung bringenœị
. Erstens eine Hilfsfunktion zum Berechnen von Nachbarn in nur einer Richtung, die im Übrigen die Eingabe transponiert:Visuell lautet die Berechnung:
Interpretation: Zelle (x, y) dieses Ergebnisses ist die Summe der horizontalen Nachbarn der Zelle (y, x). (Hier sehen wir zum Beispiel, dass f (A) [2,3] = 16 = 7 + 9 = A [3,1] + A [3,3] .)
Dann ist die Hauptfunktion:
quelle
æc
?Jelly , 18 Bytes
Probieren Sie es online!
Die Hilfsfunktion findet die Nachbarn jedes Elements in jeder Zeile. Die Hauptfunktion führt dies für die Zeilen und Spalten durch und findet dann das Element mit der maximalen Nachbarschaftssumme.
quelle
Wolfram Language (Mathematica) , 58 Byte
Falte die Matrix mit( 0101ich1010) , nimm das Element mit dem größten Realteil und nimm seinen Imaginärteil.
Probieren Sie es online!
quelle
Python 2 , 127 Bytes
Probieren Sie es online!
quelle
Schablone , 1 + 10 = 11 Bytes (nicht konkurrierend)
Befehlszeilenoption:
1
Berechne 1 GenerationProbieren Sie es online!
y
von der abgeflachten ursprünglichen Eingabe⊃⍨
holt⊃
die erste⍒
in absteigender Reihenfolge,
von der abgeflachte+/
SummenN
der von Neumanns Nachbarschaften ohne selbstquelle
y
habe der Sprache hinzugefügt , als ich sah, dass der Zugriff auf die ursprüngliche Eingabe erleichtert werden muss. Vorher musste man(,⍎'input')
statt schreibeny
.JavaScript (ES6), 94 Byte
Probieren Sie es online!
Wie?
Anstatt nach dem Maximum der Summe der 4 Nachbarn zu suchen, suchen wir nach dem Minimum m der Summe s ihrer Einkomplemente. Auf diese Weise können wir undefinierte Werte genauso wie Nullen verarbeiten, weil:
Die innere Map () ist so geschrieben, dass sie den Inhalt der Zeile r nicht verändert . Daher können wir das Ergebnis in p speichern , um die oberen Nachbarn in der nächsten Iteration zu testen.
Wir gebrauchen:
~r[x-1]
für die linke Zelle~r[x+1]
für die richtige Zelle~p[x]
für die oberste Zelle~(a[y+1]||0)[x]
für die unterste Zellequelle
K (ngn / k) ,
43 bis40 BytesProbieren Sie es online!
quelle
Java 8, 187 Bytes
Probieren Sie es online aus.
Erläuterung:
quelle
Javascript ES6, 170 Bytes
quelle