Das Navigieren in einer 2D-Matrix ist ein häufiges Problem. Wir haben es schon oft gesehen und werden es wieder sehen. Helfen Sie uns also bei der Zukunft und entwickeln Sie die kürzesten Lösungen, um alle acht möglichen Schritte in einer 2D-Matrix zu generieren.
Herausforderung
Ihr Code muss die folgenden 8 Paare von -1,0,1 in beliebiger Reihenfolge ausgeben:
(0,1)
(0,-1)
(1,0)
(-1,0)
(1,1)
(1,-1)
(-1,1)
(-1,-1)
Regeln
- Es erfolgt keine Eingabe.
- Ausgabereihenfolge ist nicht relevant
- Die Ausgabe ist flexibel. Zahlenpaare müssen nur unterscheidbar sein
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes
code-golf
kolmogorov-complexity
matrix
Totes Opossum
quelle
quelle
(1 + 0i)
?Antworten:
Oktave , 24 Bytes
Probieren Sie es online!
Ich habe diesen Ansatz noch nicht gesehen.
Erstellt eine Liste mit ganzen Zahlen
[0, 1, 2, 3, 5, 6, 7, 8]
und konvertiert sie in ternäre Zahlen , wobei ein Zeichenarray zurückgegeben wird:Das Subtrahieren
49
(ASCII-Wert für1
) von allen Zeichen ergibt ein numerisches Array:quelle
T-SQL,
8078 BytesEine (permanent) Tabelle erstellt t enthält
(-1,0,1)
, und führt eine Selbstverknüpfung mit einerWHERE
Klausel, schließt die0,0
Reihe. Die Tabelle t wird von meinem Code nicht aufgeräumt, Sie müssen sie selbst fallen lassen.Leider fast doppelt so lang wie die langweilige Lösung ( 44 Byte ), da SQL Rückgaben in Strings zulässt:
quelle
WHERE t.n OR z.n
? (Sie können in einigen, aber nicht allen SQL-Dialekten.)An expression of non-boolean type specified in a context where a condition is expected
Pure Bash (keine externen Dienstprogramme), 36
Probieren Sie es online!
Schlag mit Sed, 35
Probieren Sie es online!
quelle
cut
36 Bytes verwenden.echo {-1..1},{-1..1}|sed s/0,0.//
printf %s\\n {-1..1},{-1..1}|grep 1
ist auch 35.Python 2 , 33 Bytes
Probieren Sie es online!
Dennis hat
35 Bytes gespart , wow. Vielen Dank!quelle
Jelly ,
876 BytesProbieren Sie es online!
Meine allererste Gelee-Antwort! Vielen Dank an Dennis für das letzte Puzzleteil.
Mal sehen, ob ich es erklären kann ... lol.
-1 Byte danke an Erik; -1 Byte danke an Mr Xcoder und Dennis
quelle
3p3_2ẸƇ
3
.R ,
2624 BytesDank an @JDoe für das Speichern von zwei weiteren Bytes mit einem direkten Ansatz:
Probieren Sie es online!
Die ursprüngliche Antwort:
Probieren Sie es online!
Oder für 27 Bytes
Probieren Sie es online!
Oder für 34 Bytes mit Faktoren:
Probieren Sie es online!
Diese letzte Lösung ist möglicherweise die beste, wenn die Ausgabe zwischen 1 und 3 und nicht zwischen -1 und 1 liegt.
In der anderen Antwort finden Sie alternative Lösungen mit
expand.grid
oder mitcbind
.quelle
c
was in einer Matrix keinen Sinn machte, also habe ich aufpaste
das ursprüngliche Ausgabeformat umgestellt ...paste
Japt ,
131211 BytesDank @Shaggy ein Byte gespeichert
Probieren Sie es online! Verwendet
-R
flag, um jedes Element in eine eigene Zeile zu setzen.Erläuterung
quelle
Japt
-Q
,1513 BytesIch bin sicher, dass es einen kürzeren Weg gibt, aber ich mochte diesen Ansatz.
Zwei Bytes weniger dank Shaggy .
Probieren Sie es online!
quelle
Haskell , 22 Bytes
Probieren Sie es online!
Laikoni hat 1 Byte gespeichert.
quelle
_:l=mapM(:[1,-1])[0,0]
Speichert ein Byte. (Entnommen aus isaacgs antwort auf die frühere herausforderung).Perl 6 , 23 Bytes
Probieren Sie es online!
quelle
05AB1E ,
87 BytesProbieren Sie es online!
Erläuterung
-1 Byte danke an Emigna!
quelle
2Ý<ã
), aber fand heraus, wie man das mittlere Element der Paarliste entfernt. Hatte nicht darüber nachgedacht, nach absoluten Werten zu sortieren und das erste zu entfernen. +1 von mir.ʒĀZ
, um 1 zu speichernMATL , 12 Bytes
Probieren Sie es online!
Da es MATL-Monat ist, ist hier eine MATL-Portierung von @ Stewies Octave-Antwort. Die Sequenz [0 1 2 3 5 6 7 8] wird als die eingestellte Differenz zwischen [0 ... 8] und 4 erzeugt.
quelle
Java 8,
8342 Bytes-41 Bytes dank @AdmBorkBork durch .
Probieren Sie es online aus.
Nicht fest codierte Version als Referenz (
83727068 Bytes ):-11 Bytes dank @ OlivierGrégoire .
-2 Bytes, die einen Port für die Antwort von @ETHproductions auf JavaScript (ES6) erstellen .
Probieren Sie es online aus.
quelle
v->{for(int i=9;i-->0;)if(i!=4)System.out.println((i/3-1)+","+(i%3-1));}
.R , 27 Bytes
Probieren Sie es online!
30 und 35 Bytes:
quelle
expand.grid(-1:1,-1:1)[-5,]
ist 27 Bytes.JavaScript (ES6)
Zwei alternative Methoden, beide länger als die Hardcodierung.
49 Bytes
Probieren Sie es online!
51 Bytes
Probieren Sie es online!
quelle
Haskell , 27 Bytes
Probieren Sie es online!
Die Ausgabe ist
[(0,1),(0,-1),(1,0),(1,1),(1,-1),(-1,0),(-1,1),(-1,-1)]
.quelle
Haskell ,
2827 BytesProbieren Sie es online!
quelle
Schale ,
76 BytesEs gibt viele verschiedene Möglichkeiten (der knifflige / kostspielige Teil wird beseitigt
[0,0]
),7 Bytes sind die kürzesten, die ichdank Leo finden konnte, weil er darauf hingewiesen hat, die Dezimalumwandlung (d
) als Filter zu verwenden:Probieren Sie es online!
Erläuterung
Alternative, 7 Bytes
Probieren Sie es online!
Erläuterung
quelle
tπ2↑3İZ
.PowerShell , 41 Byte
Probieren Sie es online!
Double-for-Schleife über den Bereich
1..-1
, mit einem-n
ote
Quals am Ende, um den überflüssigen0,0
Eintrag herauszuziehen . Sie werden jeweils einzeln in der Pipeline belassen und implizierenWrite-output
beim Abschluss des Programms, dass uns neue Zeilen kostenlos zur Verfügung gestellt werden.Leider ist nur die Ausgabe der Barebones-Zeichenfolge um zwei Bytes kürzer:
Aber das ist langweilig.
quelle
Python 2 , 39 Bytes
Probieren Sie es online!
quelle
J ,
1816 BytesProbieren Sie es online!
quelle
echo }.>,{;~0 1 _1
TIOecho}.>,{;~0 1 _1
echo
gebrauchtCJam , 13 Bytes
Probieren Sie es online!
Erläuterung
quelle
Befunge-93 , 24 Bytes
Probieren Sie es online!
Ich denke, bei dieser Herausforderung fehlen Antworten in 2D-Sprachen, auch wenn sich die meisten nicht diagonal bewegen. Dies gibt durch Leerzeichen getrennte Zahlen aus, wobei jedes Paar durch Tabulatoren getrennt ist.
quelle
F # (Mono) , 54 Bytes
Probieren Sie es online!
44 Bytes - danke an Laikoni:
quelle
(0,0)
das erste Element sein und anrufenSeq.tail
: Probieren Sie es online!Brachylog , 8 Bytes
Probieren Sie es online!
Erläuterung
quelle
MATL , 12 Bytes
Probieren Sie es bei MATL Online!
Meine allererste ernsthafte MATL-Antwort! Vielen Dank an Luis Mendo , Sanchises und DJMcMayhem für die Hilfe.
Wie es funktioniert
quelle
Perl 5 , 31 Bytes
Probieren Sie es online!
quelle
-1..1
in der Welt arbeiten?bash
, aber nicht in Perl :(Bash , 30 Bytes
Probieren Sie es online!
Gibt in jeder bis auf die letzte Zeile ein Leerzeichen aus. (Dank an @Neil - dies hat ursprünglich ein führendes Leerzeichen gedruckt, aber ein nachfolgendes Leerzeichen ist besser, wie in ihrem Kommentar angegeben)
quelle
Batch, 77 Bytes
63 Byte, wenn ein nicht standardmäßiges Trennzeichen zulässig ist:
quelle
Pyth,
119 BytesProbieren Sie es hier aus
Erläuterung
Genauso könnten wir es gebrauchen
t*J+U2_1J
, aber das ist nicht kürzer.quelle