Dobra, moja druga próba golfa kodowego, zobaczmy, jak to idzie.
Udawaj, że masz tablicę 9 wartości. Teraz wyobraź sobie tę tablicę w siatce 3x3.
Musisz zwrócić sąsiadów, których liczba ma jako indeksy tablicy.
0 | 1 | 2)
3 | 4 | 5
6 | 7 | 8
Zasady:
- To jest golf golfowy, więc wygrywa najkrótsza odpowiedź.
- Indeks tablicy udawanych może zaczynać się od 0 lub 1. (wszystkie przykłady używają jednak 0)
- Zwracane są tylko wartości wartości (jak
if 3: return 046
) - Podanie może być tylko procedurą / funkcją / metodą, ale przykład byłby miły
- Zwracana wartość może być w dowolnej kolejności (np. Jeśli wejście wynosi 0, może to być 13 lub 31)
- jeśli chcesz, wynikiem może być lista liczb, np.
[0,4,6]
zamiast046
- przekątne się nie liczą, jak widać w przykładach.
Przykłady:
Wejście:
0
wynik:
13
Wejście:
3)
wynik:
046
Wejście:
4
wynik:
1357
[0,4,6]
Zamiast046
?Odpowiedzi:
Galaretka ,
1613 bajtówWypróbuj online!
Jak to działa
źródło
MATL ,
1716 bajtówTablica jest oparta na 1, to znaczy zawiera liczby od
1
do9
.Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
Rozważ dane wejściowe
2
jako przykład.źródło
Mathematica, 32 bajty
Używa wykresu zamiast tablicy.
GridGraph@{3,3}
konstruuje wykres w kształcie siatki 3x3, pokazany poniżej, który Mathematica domyślnie przydziela numery 1–9 wierzchołkom. Następnie~AdjacencyList~#&
mówi sąsiadom wierzchołka.źródło
Mathematica, 40 bajtów
1-indeksowany. Po prostu szuka odpowiedzi. Czy ktoś może zrobić lepiej w Mathematica?
źródło
31[420,51,...,75][[#]]&
.GridGraph@{3,3}~AdjacencyList~#&
dla 32 bajtów, z 1-indeksowaniem.Oktawa,
424039 bajtówIndeks oparty na 1.
Sprawdź wszystkie przypadki testowe.
Wyjaśnienie:
Przykład:
n = 2
(W Octave dane są przechowywane w kolumnach.)
indeks logiczny, w którym odległość wynosi 1:
źródło
Python 2, 71 bajtów
1-indeksowany
Wypróbuj online!
Uzyskanie wyniku ze wstępnie zdefiniowanej listy wyników jest krótsze (46 bajtów):
0-indeksowany
Wypróbuj online!
źródło
Haskell ,
74 7168 bajtówWypróbuj online! Wykorzystuje 1-indeksowaną siatkę. Przykładowe użycie:
f 3
zwraca[2,6]
.Edycja: Zaoszczędź
36 bajtów dzięki Ørjan Johansen!W przypadku
7775 bajtów następująca funkcja#
działa dla dowolnego rozmiaru siatkim
:Wypróbuj online! Dla każdej
n
listy[n-m,n-1,n+1,n+m]
zawiera wszystkich czterech sąsiadów. Dla każdego wpisux
na tej liście sprawdzamy-1<x
ix<m*m
upewniamy się, żex
nie znajduje się powyżej lub poniżej siatki,mod n 3>0||n-1/=x
aby wymusić lewą granicę siatki imod(n+1)m>0||n+1/=x
lewą granicę.źródło
[n-3,n-1..n+3]
igcd 3n>1
.gcd
części. Powinno być<3
, a potem się załamujen==0
. Państwo może być w stanie korzystać z tego sprawę, jeśli zmienisz wszystko1
-indexed.n/=2&&n/=5
można je zastąpićmod x 3>0
. (Lubgcd
wersja z reindeksowaniem, która może być teraz używana dwukrotnie.)Ruby ,
51 4845 bajtówWypróbuj online!
Utwórz 2 tablice z sąsiadującymi pionami i poziomymi, a następnie wybierz jedną lub więcej z nich.
Ruby na stałe, 44 bajty
... Nie jest tego warte.
źródło
C,
1009291837874 bajty1-indeksowany. Dzięki @Neil za oszczędność 4 bajtów.
Wypróbuj online!
Wersja na stałe, 56 bajtów
0-indeksowane
źródło
n>3&&p(n-3)
itp., Aby zapisać 4 bajty? W drugiej wersji nie możesz pisać,l[]=
aby zapisać bajt?Python 2, 51 bajtów
Na podstawie poprzedniej wersji mojego odpowiedzi Ruby uznałem ją za interesującą, ponieważ był to w większości ten sam kod, wykorzystujący inną sztuczkę i daje ten sam wynik. Właściwe dobranie tego pomogło mi trochę lepiej odpowiedzieć na rubinową odpowiedź.
Zasadniczo ruby ma go krótszy, ponieważ indeks plasterka tablicy jest włącznie, python potrzebuje
+1
kompensacji.Wyjaśnienie
Uzyskaj 2 tablice (sąsiedzi w pionie i poziomie), a następnie wybierz jedną lub obie na podstawie niektórych obliczeń.
źródło
Java 7, 63 bajty (na stałe)
0-indeksowane
(Odwrócone wyjście zamówienia, ponieważ
024
i046
nie są poprawnymi liczbami całkowitymi.)Wciąż pracuję na wersji nie zakodowanej na stałe, alezapewniam cię, że nie będzie krótsza ..Wypróbuj tutaj.
82 bajty
1-indeksowany
Na podstawie odpowiedzi @Steadybox 'C.
Wypróbuj tutaj.
źródło
JavaScript + lodash, 71 bajtów
źródło
Partia, 116 bajtów
0-indeksowane.
źródło