Okay, mein zweiter Versuch, Code Golf zu spielen, mal sehen, wie das geht.
Stellen Sie sich vor, Sie haben ein Array mit 9 Werten. Stellen Sie sich nun dieses Array in einem 3x3-Raster vor.
Sie müssen Nachbarn zurückgeben, die diese Nummer als Indizes des Arrays hat.
0 | 1 | 2
3 | 4 | 5
6 | 7 | 8
Regeln:
- Es ist Code Golf, also gewinnt die kürzeste Antwort.
- Der Index des Pretend-Arrays kann bei 0 oder 1 beginnen (alle Beispiele verwenden jedoch 0).
- Nur die Rückgabe von Werten Werte ist verpönt (wie
if 3: return 046
) - Die Einreichung kann nur eine Prozedur / Funktion / Methode sein, aber ein Beispiel wäre schön
- Der zurückgegebene Wert kann in beliebiger Reihenfolge angegeben werden (z. B. wenn die Eingabe 0 ist, können es 13 oder 31 sein).
- Wenn Sie möchten, kann die Ausgabe eine Liste von Zahlen sein, z. B.
[0,4,6]
anstelle von046
- Diagonalen zählen nicht, wie die Beispiele zeigen.
Beispiele:
Eingang:
0
Ausgabe:
13
Eingang:
3
Ausgabe:
046
Eingang:
4
Ausgabe:
1357
[0,4,6]
anstelle von046
?Antworten:
Gelee ,
1613 BytesProbieren Sie es online aus!
Wie es funktioniert
quelle
MATL ,
1716 BytesDas Array ist 1-basiert, dh es enthält Zahlen von
1
bis9
.Probieren Sie es online aus! Oder überprüfen Sie alle Testfälle .
Erläuterung
Betrachten Sie die Eingabe
2
als Beispiel.quelle
Mathematica, 32 Bytes
Verwendet ein Diagramm anstelle eines Arrays.
GridGraph@{3,3}
erstellt ein unten gezeigtes 3x3-Gitter, das Mathematica standardmäßig mit den Zahlen 1–9 für die Scheitelpunkte beschriftet. Dann~AdjacencyList~#&
sagt Ihnen die Nachbarn eines Scheitelpunktes.quelle
Mathematica, 40 Bytes
1-indiziert. Schlägt nur die Antwort nach. Kann jemand in Mathematica besser abschneiden?
quelle
31[420,51,...,75][[#]]&
.GridGraph@{3,3}~AdjacencyList~#&
für 32 Bytes mit 1-Indizierung verwenden.Oktave,
424039 Bytes1-basierter Index.
Überprüfen Sie alle Testfälle.
Erläuterung:
Beispiel:
n = 2
(In Oktave werden Daten spaltenweise gespeichert.)
logischer Index mit Abstand 1:
quelle
Python 2, 71 Bytes
1-indexiert
Online ausprobieren!
Das Abrufen des Ergebnisses aus einer vordefinierten Ergebnisliste ist kürzer (46 Byte):
0-indiziert
Probieren Sie es online aus!
quelle
Haskell ,
74 7168 BytesProbieren Sie es online aus! Verwendet ein 1-indiziertes Raster. Anwendungsbeispiel:
f 3
Gibt zurück[2,6]
.Edit:
36 Bytes dank Ørjan Johansen gespeichert !Für
7775 Bytes funktioniert die folgende Funktion#
für eine beliebige Rastergrößem
:Probieren Sie es online aus! Für jeden enthält
n
die Liste[n-m,n-1,n+1,n+m]
alle vier Nachbarn. Für jeden Eintragx
in dieser Liste überprüfen wir-1<x
undx<m*m
sicher zu machenx
ist nicht über oder unter dem Gitter,mod n 3>0||n-1/=x
die linke Gitter Grenze und zur Durchsetzungmod(n+1)m>0||n+1/=x
für den linken Rand.quelle
[n-3,n-1..n+3]
und verwendengcd 3n>1
.gcd
Teil. Es hätte sein sollen<3
und bricht dann fürn==0
. Sie könnten der Lage sein , diesen Trick zu verwenden , wenn Sie alles ändern1
-indexed.n/=2&&n/=5
kann durch ersetzt werdenmod x 3>0
. (Oder diegcd
Version mit Neuindizierung, die jetzt zweimal verwendet werden könnte.)Ruby ,
51 4845 BytesProbieren Sie es online aus!
Erstellen Sie zwei Arrays mit vertikalen und horizontalen Nachbarn und wählen Sie dann eines oder mehrere aus.
Ruby fest codiert, 44 Bytes
... Ist es nicht wert.
quelle
C
1009291837874 Bytes1-indiziert. Vielen Dank an @Neil für das Speichern von 4 Bytes.
Probieren Sie es online aus!
Hardcodierte Version, 56 Bytes
0-indiziert
quelle
n>3&&p(n-3)
usw., um 4 Bytes zu sparen? Können Sie in der zweiten Version nicht schreibenl[]=
, um ein Byte zu speichern?Python 2, 51 Bytes
Basierend auf einer früheren Version meiner Ruby- Antwort fand ich sie interessant, da es sich meistens um denselben Code handelte, der einen anderen Trick verwendete und dasselbe Ergebnis lieferte. Das Richtige zu tun hat mir geholfen, die Rubinantwort ein bisschen mehr zu spielen.
Grundsätzlich hat Ruby es kürzer, weil der Array-Slice-Index inklusive ist, Python braucht ein
+1
, um dies zu kompensieren.Erläuterung
Holen Sie sich die 2 Arrays (vertikale und horizontale Nachbarn) und wählen Sie dann eines oder beide basierend auf einigen Berechnungen aus.
quelle
Java 7, 63 Bytes (fest codiert)
0-indiziert
(Ausgabe in umgekehrter Reihenfolge, da
024
und046
keine gültigen Ganzzahlen sind.)Arbeitet immer noch an einer nicht fest codierten Version, aberich kann Ihnen versichern, dass sie nicht kürzer sein wird.Probieren Sie es hier aus.
82 Bytes
1-indiziert
Basierend auf der Antwort von @Steadybox 'C.
Probieren Sie es hier aus.
quelle
JavaScript + lodash, 71 Bytes
quelle
Stapel, 116 Bytes
0-indiziert.
quelle