Nawigacja w matrycy 2D jest powszechnym problemem. Widzieliśmy to wiele razy i zobaczymy ponownie. Pomóżmy więc nam w przyszłości i opracujmy najkrótsze rozwiązania w celu wygenerowania wszystkich ośmiu możliwych kroków w matrycy 2D.
Wyzwanie
Twój kod musi generować następujące 8 par -1,0,1 w dowolnej kolejności:
(0,1)
(0,-1)
(1,0)
(-1,0)
(1,1)
(1,-1)
(-1,1)
(-1,-1)
Zasady
- Brak danych wejściowych.
- Kolejność wyjściowa nie jest istotna
- Dane wyjściowe są elastyczne. Pary liczb po prostu muszą być rozróżnialne
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach
code-golf
kolmogorov-complexity
matrix
Dead Possum
źródło
źródło
(1 + 0i)
?Odpowiedzi:
Oktawa , 24 bajty
Wypróbuj online!
Nie widziałem jeszcze takiego podejścia.
Tworzy listę liczb całkowitych
[0, 1, 2, 3, 5, 6, 7, 8]
i konwertuje ją na trójskładnikową, zwracając tablicę znaków:Odejmowanie
49
(wartość ASCII dla1
) od wszystkich znaków daje tablicę numeryczną:źródło
T-SQL,
8078 bajtówTworzy (trwałą) tabelę t zawierającą
(-1,0,1)
i wykonuje samozłączenie zWHERE
klauzulą wykluczającą0,0
wiersz. Tabela t nie jest czyszczona przez mój kod, musisz sam ją upuścić.Niestety prawie dwa razy dłużej niż nudne rozwiązanie ( 44 bajty ), ponieważ SQL pozwala na zwroty w ciągach:
źródło
WHERE t.n OR z.n
? (Możesz w niektórych, ale nie we wszystkich dialektach SQL).An expression of non-boolean type specified in a context where a condition is expected
Pure Bash (bez narzędzi zewnętrznych), 36
Wypróbuj online!
Bash with Sed, 35
Wypróbuj online!
źródło
cut
dla 36 bajtów.echo {-1..1},{-1..1}|sed s/0,0.//
printf %s\\n {-1..1},{-1..1}|grep 1
ma również 35 lat.Python 2 , 33 bajty
Wypróbuj online!
Dennis zapisał
35 bajtów, wow. Dzięki!źródło
Galaretka ,
876 bajtówWypróbuj online!
Moja pierwsza w historii odpowiedź na galaretkę! Ogromne podziękowania dla Dennisa za ostatni kawałek układanki.
Zobaczmy, czy mogę to wyjaśnić ... lol.
-1 bajt dzięki Erikowi; -1 bajt dzięki Mr Xcoder i Dennis
źródło
3p3_2ẸƇ
3
.R ,
2624 bajtówKredyty dla @JDoe za zapisanie dwóch kolejnych bajtów przy bezpośrednim podejściu:
Wypróbuj online!
Oryginalny asnwer:
Wypróbuj online!
Lub na 27 bajtów
Wypróbuj online!
Lub dla 34 bajtów z czynnikami:
Wypróbuj online!
To ostatnie rozwiązanie może być najbardziej golfowe, jeśli wyjście może wynosić od 1 do 3 zamiast od -1 do 1.
Zobacz drugą odpowiedź R dla alternatywnych rozwiązań z
expand.grid
lub zcbind
.źródło
c
co nie miało sensu w matrycy, więc przełączyłem siępaste
na oryginalny format wyjściowy ...paste
Japt ,
131211 bajtówZapisano bajt dzięki @Shaggy
Wypróbuj online! Używa
-R
flagi, aby umieścić każdy element we własnej linii.Wyjaśnienie
źródło
Japt
-Q
,1513 bajtówJestem pewien, że jest krótsza droga, ale podobało mi się to podejście.
Ogolił dwa bajty dzięki Kudłatemu .
Wypróbuj online!
źródło
Haskell , 22 bajty
Wypróbuj online!
Laikoni zapisał 1 bajt.
źródło
_:l=mapM(:[1,-1])[0,0]
zapisuje bajt. ( Na podstawie odpowiedzi Isaacga na wcześniejsze wyzwanie).Perl 6 , 23 bajtów
Wypróbuj online!
źródło
05AB1E ,
87 bajtówWypróbuj online!
Wyjaśnienie
-1 bajt dzięki Emignie!
źródło
2Ý<ã
), ale zastanawiałem się, jak usunąć środkowy element listy par. Nie myślałem o sortowaniu według wartości bezwzględnej i usunięciu pierwszego .. +1 ode mnie.ʒĀZ
aby uratować 1MATL , 12 bajtów
Wypróbuj online!
Ponieważ jest to miesiąc MATL, oto port MATL odpowiedzi Octave @ Stewie. Sekwencja [0 1 2 3 5 6 7 8] jest generowana jako ustawiona różnica między [0 ... 8] a 4.
źródło
Java 8,
8342 bajty-41 bajtów dzięki @AdmBorkBork poprzez stałe kodowanie ..
Wypróbuj online.
Wersja niekodowana jako odniesienie (
83727068 bajtów ):-11 bajtów dzięki @ OlivierGrégoire .
-2 bajty tworzą port odpowiedzi JavaScript (ES6) @ETHproductions .
Wypróbuj online.
źródło
v->{for(int i=9;i-->0;)if(i!=4)System.out.println((i/3-1)+","+(i%3-1));}
.R , 27 bajtów
Wypróbuj online!
30 i 35 bajtów:
źródło
expand.grid(-1:1,-1:1)[-5,]
ma 27 bajtów.JavaScript (ES6)
Dwie alternatywne metody, obie dłuższe niż na stałe.
49 bajtów
Wypróbuj online!
51 bajtów
Wypróbuj online!
źródło
Haskell , 27 bajtów
Wypróbuj online!
Dane wyjściowe to
[(0,1),(0,-1),(1,0),(1,1),(1,-1),(-1,0),(-1,1),(-1,-1)]
.źródło
Haskell ,
2827 bajtówWypróbuj online!
źródło
Łuska ,
76 bajtówIstnieje wiele różnych sposobów (pozbywanie się skomplikowanej / kosztownej części
[0,0]
),7 bajtów to najkrótszy czas, jaki mogłem wymyślić,dzięki Leo za wskazanie zastosowania konwersji dziesiętnej (d
) jako filtra:Wypróbuj online!
Wyjaśnienie
Alternatywnie, 7 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
tπ2↑3İZ
.PowerShell , 41 bajtów
Wypróbuj online!
Pętla podwójna w całym zakresie
1..-1
, z końcówkami-n
ote
na końcu, aby wyciągnąć zewnętrzne0,0
wejście. Każdy z nich jest osobno w przygotowaniu i domyślnieWrite-output
po zakończeniu programu daje nam nowe linie za darmo.Niestety, wyjściowy ciąg znaków barebones jest o dwa bajty krótszy:
Ale to jest nudne.
źródło
Python 2 , 39 bajtów
Wypróbuj online!
źródło
J ,
1816 bajtówWypróbuj online!
źródło
echo }.>,{;~0 1 _1
TIOecho}.>,{;~0 1 _1
echo
potrzebny?CJam , 13 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Befunge-93 , 24 bajty
Wypróbuj online!
Wydaje mi się, że w tym wyzwaniu brakuje odpowiedzi z języków 2D, nawet jeśli większość nie porusza się po przekątnej. Powoduje to wyprowadzenie liczb oddzielonych spacjami, każda para oddzielona tabulatorami.
źródło
F # (mono) , 54 bajty
Wypróbuj online!
44 bajty - dzięki Laikoni:
źródło
(0,0)
pierwszym elementem i wywołującSeq.tail
: Wypróbuj online!Brachylog , 8 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
MATL , 12 bajtów
Wypróbuj w MATL Online!
Moja pierwsza poważna odpowiedź MATL! Wielkie dzięki Luis Mendo , Sanchises i DJMcMayhem za pomoc.
Jak to działa
źródło
Perl 5 , 31 bajtów
Wypróbuj online!
źródło
-1..1
działałby w świecie?bash
on w Perlu, ale nie w Perlu :(Bash , 30 bajtów
Wypróbuj online!
Drukuje końcowe spacje w każdym wierszu, ale w ostatnim. (Dzięki @Neil - pierwotnie wydrukowano spację wiodącą, ale spacja końcowa jest lepsza zgodnie z ich komentarzem)
źródło
Partia, 77 bajtów
63 bajty, jeśli dozwolony jest niestandardowy separator:
źródło
Pyth,
119 bajtówWypróbuj tutaj
Wyjaśnienie
Równie dobrze moglibyśmy użyć
t*J+U2_1J
, ale to nie jest krótsze.źródło