Weź liczby 0, 1, 2, 3, 4, ...
i ułóż je w spiralę zgodnie z ruchem wskazówek zegara, zaczynając w dół, zapisując każdą cyfrę w osobnym kwadracie.
Następnie, biorąc pod uwagę jeden z czterech wyraźnych i spójnych znaków ASCII (twój wybór) reprezentujących oś i wejściową liczbę całkowitą n
, wyślij pierwsze n
wyrazy opisanej sekwencji, wybierając kwadraty wzdłuż odpowiedniej osi.
Na przykład poniżej znajduje się ułożona spirala do połowy 29
. Załóżmy, że używamy u / d / l / r
czterech naszych reprezentujących postaci up / down / left / right
. Następnie, podane u
jako dane wejściowe, wyprowadzamy 0, 5, 1, 4 ...
(dodatnia oś y) do n
th. Gdybyśmy zamiast podane l
jako dane wejściowe, to byłoby 0, 3, 1, 1 ...
aż do n
XX perspektywie.
2---3---2---4---2---5---2
| |
2 1---3---1---4---1 6
| | | |
2 2 4---5---6 5 2
| | | | | |
1 1 3 0 7 1 7
| | | | | | |
2 1 2---1 8 6 2
| | | | |
0 1---0---1---9 1 8
| | |
2---9---1---8---1---7 2
Są to sekwencje w OEIS:
- http://oeis.org/A033953 dla dodatniej osi x
- http://oeis.org/A033988 dla dodatniej osi y
- http://oeis.org/A033989 dla ujemnej osi X.
- http://oeis.org/A033990 dla ujemnej osi y
Przykłady
d 19
[0, 1, 1, 8, 3, 7, 6, 2, 1, 5, 1, 1, 6, 2, 2, 1, 3, 4, 0]
r 72
[0, 7, 1, 7, 4, 2, 8, 1, 1, 3, 1, 2, 0, 2, 3, 1, 3, 4, 6, 5, 5, 5, 7, 7, 8, 8, 9, 6, 8, 1, 1, 1, 2, 3, 1, 8, 0, 6, 1, 7, 0, 9, 2, 8, 4, 3, 2, 1, 1, 7, 2, 6, 2, 1, 3, 3, 5, 5, 3, 2, 2, 0, 4, 3, 2, 5, 4, 6, 5, 0, 5, 1]
u 1
[0]
Zasady
- Jeśli dotyczy, możesz założyć, że wejście / wyjście będzie pasować do rodzimego typu Integer w Twoim języku.
- Jeśli używasz liczb całkowitych do przedstawienia czterech osi, możesz użyć liczb całkowitych ujemnych bez łamania reguł.
- Dane wejściowe i wyjściowe można podać dowolną dogodną metodą .
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Standardowe luki są zabronione.
- To jest golf-golf więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
code-golf
number-theory
grid
AdmBorkBork
źródło
źródło
Odpowiedzi:
Python 2 ,
94898483747270 bajtówUżyłem WolframAlpha i stwierdziłem, że górna granica 5 n > 4n 2 + 3n wydaje się wystarczająca. Można go zmienić na 9 n bez żadnych kosztów. Aby wypróbować większe dane wejściowe, użyj
9*n*n
zamiast,5**n
aby uniknąć braku pamięci.Wypróbuj online!
Dane wejściowe dla kierunków to:
Zaoszczędzono 14 bajtów dzięki Rodowi
Zaoszczędzono 2 bajty dzięki Jonathanowi Allanowi
źródło
MATL , 32 bajty
Dane wejściowe to
n
,a
gdziea
reprezentuje oś w następujący sposób:0
: lewo;1
: w górę;2
: dobrze;3
: na dół.Dane wyjściowe to ciąg znaków.
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
źródło
Galaretka ,
1918 bajtówUżywa sztuczki 5 n z odpowiedzi Python na mbomb007
Dyadyczny link przyjmujący
n
po lewej stronied
i liczbę całkowitą z:[-3,-1,1,3]:[v,<,^,>]
Wypróbuj online!
20-bajtowa alternatywa, która jest jednocześnie znacznie szybsza i nie powoduje awarii dla tak małego n, to:
Wypróbuj online!
W jaki sposób?
źródło
będzie działać przez znaczną liczbę n (jak +1000)
JavaScript (Node.js) , 104 bajty
Wypróbuj online!
Wyjaśnienie
C-ta cyfra stałej Champernowne
________________________________________________________
Metoda mniej wydajna (nie działa dla 1000+)
JavaScript (Node.js) , 81 bajtów
Wypróbuj online!
źródło
Stax , 13 bajtów
Uruchom i debuguj
Pobiera dane wejściowe wraz z kierunkiem, a następnie zliczaniem. Prawo, w górę, w lewo iw dół są
1
,3
,5
, i7
odpowiednio. Uruchomienie trzech dostarczonych przypadków testowych zajmuje pełną minutę.źródło