Wyzwanie:
Oto pierwsze 100 pozycji w sekwencji:
6,5,4,3,2,1,66,65,64,63,62,61,56,55,54,53,52,51,46,45,44,43,42,41,36,35,34,33,32,31,26,25,24,23,22,21,16,15,14,13,12,11,666,665,664,663,662,661,656,655,654,653,652,651,646,645,644,643,642,641,636,635,634,633,632,631,626,625,624,623,622,621,616,615,614,613,612,611,566,565,564,563,562,561,556,555,554,553,552,551,546,545,544,543,542,541,536,535,534,533,...
Jak powstaje ta sekwencja? Najpierw mamy liczbę w zakresie [6, 1]
(wszystkie możliwe wartości jednej kości od najwyższej do najniższej). Następnie mamy liczby [66..61, 56..51, 46..41, 36..31, 26..21, 16..11]
(wszystkie możliwe skonkatowane wartości dwóch kości od najwyższej do najniższej). Itd.
Jest to związane z sekwencją OEIS A057436: Zawiera tylko cyfry od 1 do 6 , ale wszystkie liczby z jednakową liczbą cyfr posortowane są w kolejności w kolejności.
Wyzwanie polega na wybraniu jednej z tych trzech opcji dla funkcji / programu w powyższej kolejności:
- Weź wejściową wartość i wyślij -tą wartość tej sekwencji, gdzie może ona być indeksowana 0 lub indeksowana 1.
- Weź wejście i wyślij pierwsze lub wartości z tej sekwencji.
- Wyjście wartości z sekwencji na czas nieokreślony.
Oczywiście można zastosować dowolny rozsądny format wyjściowy. Mogą być ciągami / liczbami całkowitymi / dziesiętnymi / itd .; może być jako (nieskończona) lista / tablica / strumień / itp .; może być wyprowadzany za pomocą spacji / przecinka / nowej linii / innego ogranicznika do STDOUT; itd. itd. Podaj w odpowiedzi, jakie I / O i opcję używasz!
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły z domyślnymi regułami We / Wy , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i typem zwracanych, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem kodu (tj. TIO ).
- Zalecane jest również dodanie wyjaśnienia do odpowiedzi.
Oto kilka większych przypadków testowych, jeśli wybierzesz opcję 1:
n 0-indexed output 1-indexed output
500 5624 5625
750 4526 4531
1000 3432 3433
9329 11111 11112
9330 666666 11111
9331 666665 666666
10000 663632 663633
100000 6131232 6131233
Odpowiedzi:
Galaretka , 5 bajtów
Wypróbuj online!
1 indeksowana n-ta wartość.
źródło
Perl 6 ,
2423 bajtów-1 bajt dzięki nwellnhof
Wypróbuj online!
Zwraca ciąg nieskończenie oddzielony spacjami / znakami nowej linii. Lub, dla kilku kolejnych bajtów, możemy mieć leniwą nieskończoną listę, do której możemy indeksować zamiast tego.
Perl 6 , 27 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Python 2 ,
393834 bajtówWypróbuj online!
Wyprowadza 1-indeksowaną liczbę
źródło
R , 43 bajty
Wypróbuj online!
Drukuje sekwencję w nieskończoność
źródło
6 5 4 3 2 166 65 64...
Bash, 31 bajtów
TIO
aktualizacja z komentarzy, n-ta wartość 1-indeksowana, + narzędzia GNU + perl, 64 bajty, 7 bajtów zapisanych dzięki @manatwork
64 bajty
źródło
bc<<<obase=6\;$1
. Ale jeśli przełączy siędc
, nie ma nic do ucieczki:dc<<<6o$1p
.dc<<<6o$1p|perl -pe '1while s/(.)0/($1-1).6/e;s/0//'|tr 1-6 654321
MATL , 11 bajtów
Podaje wartości w nieskończoność.
Wypróbuj online!
Wyjaśnienie
źródło
Haskell,
3834 bajtówNieskończona lista liczb:
Wypróbuj online!
Dwa wcześniejsze rozwiązania, które dają nieskończone listy ciągów, każde zawierające 38 bajtów:
Wypróbuj online!
Wypróbuj online!
źródło
replicate
.JavaScript (ES6), 26 bajtów
Wypróbuj online!
źródło
Haskell , 28 bajtów
Wypróbuj online!
Tworzy nieskończoną listę liczb
l
. Używanie<$>
i<*>
odcięcie bajtu:29 bajtów
Wypróbuj online!
Podejście jest podobne do stałego ciągu wejściowego „654321” odpowiedzi Haskell Output All String i pomijanie pustego ciągu wyjściowego poprzez zmianę miejsca, w którym jest poprzedzony.
30 bajtów
Wypróbuj online!
źródło
0
(lub""
), ale nie znalazłem taniego sposobu, aby nie uzyskać go w wyniku ...05AB1E , 10 bajtów
Wysyła sekwencję w nieskończoność.
Wypróbuj online!
Wyjaśnienie
źródło
¸
na początku tworzy listę zawierającą pusty ciąg znaków. I 2 bajty krótsze niż rozwiązanie, którego użyłem do wygenerowania przypadków testowych, więc oczywiście +1 ode mnie. :)Perl 5,
4037 bajtów-3 bajty dzięki @Xcali
37 bajtów
40 bajtów
źródło
Java (JDK) , 48 bajtów
Wypróbuj online!
To powoduje powrót 1 indeksowanych n ty element.
Wydaje się, że rekurencja pokonała iteracyjną lambda.
Wersja iteracyjna, 49 bajtów
Wypróbuj online!
źródło
Brachylog ,
1311 bajtówDzięki Fatalize za 2 bajty
Wydaje na czas nieokreślony. Wypróbuj online!
Wyjaśnienie
źródło
6~d{⟧₁∋}ᵐẉ⊥
. Zasadniczo kończysz swój program na „false”, co zmusi go do wydrukowania wszystkich rozwiązań.C # (.NET Core) , 38 bajtów
Wypróbuj online!
Zwraca n-tą wartość (na podstawie 1).
źródło
Japt, 14 bajtów
Musi istnieć krótsze rozwiązanie wykorzystujące metody funkcyjne i / lub produkt kartezjański, ale (na razie?) Najlepszym, którym mogę zarządzać, jest port rozwiązania JS Arnaulda, więc też go oceń.
Wypróbuj lub przetestuj warunki
0-1000
źródło
Wolfram Language (Mathematica) ,
8878 bajtówWypróbuj online!
zaoszczędzono 4 + 6 bajtów dzięki @IanMiller
Lista jest indeksowana 1, zwraca numer n-ty.
źródło
Mathematica, 56 bajtów
źródło
Pip
-l
, 16 bajtówWysyła sekwencję bez końca. Wypróbuj online!
Wyjaśnienie
Te
-l
środki flag że listy są drukowane z każdej pozycji z własnej linii; jeśli element sam jest listą, jego elementy są łączone bez separatora. Np. Lista[1 [2 3] [4 [5 6]]]
zostanie wydrukowana jakoPo wyjaśnieniu:
Po pierwszej iteracji pętli
x
wygląda następująco[[6;6];[6;5];[6;4];...;[1;1]]
; po drugiej iteracji[[[6;6];6];[[6;6];5];[[6;6];4];...;[[1;1];1]]
; i tak dalej. Nie musimy się martwić spłaszczeniem list odtwarzania, ponieważ-l
skutecznie robi to za nas.źródło
Węgiel drzewny , 18 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. 1-indeksowany. Wyjaśnienie:
Wejście
n
Powtarzaj aż do
n
zera.Zmniejsz
-n
modulo6
, a następnie zwiększ wynik i wynik od prawej do lewej.Zmniejszenie
n
i liczba całkowita dzielą go przez6
.źródło
Retina 0.8.2 , 36 bajtów
Wypróbuj online! Link zawiera przypadki testowe. 1-indeksowany. Wyjaśnienie:
Konwertuj na unary. (Retina 1 zapisałaby tutaj 2 bajty.)
Konwertuj na bijective base 6 powtarzając divmod. Zauważ, że użycie
+
oznacza, że wyodrębniona cyfra jest zawsze liczbą od 1 do 6 zamiast 0 do 5 dla zwykłej konwersji podstawy 6. ((_{6})*
jest szybszy, ale kosztuje wyodrębnienie ilorazu).Transponuj cyfry, aby szóste były pierwsze, a jedne ostatnie. (Nie ma 7 lub 0, ale pozwala mi to użyć
d
skrótu.źródło
Cubix , 22 bajty
Spowoduje to wygenerowanie sekwencji w nieskończoność. Ogólna idea jest taka, że ma numer bazowy, do którego dodaje się 6-1. Dla każdego dodania wynik jest mnożony przez 10, który jest wypychany na dół stosu i używany później w sekwencji. Baza jest następnie otwierana i rozpoczyna się kolejna baza.
Wypróbuj online!
Watch It Run
źródło
C # (.NET Core) , nieskończone drukowanie,
181 18088 bajtów.Niestety zawiesza repl.it zamiast poprawnie wyświetlać dane w nieskończonej wersji, tak jak napisano (uważam, że jest to błąd w repl.it, ponieważ nie wyświetla się tak, jak program zapętla się tak, jak powinien), więc każdy, kto chce przetestować, potrzebuje komputer. Jeśli dodasz odczyt z przodu pętli, działa to również w repl.it.
Oczywiście dane wyjściowe do konsoli.
W każdym skończonym systemie kod najprawdopodobniej ostatecznie się zawiesi z błędem braku pamięci.Przerobiono kod, aby używał lambda @dana.
Wypróbuj online!
źródło
Naprzód (gforth) , 63 bajty
Wypróbuj online!
Wyjścia indeksowane 0, n-ta wartość
Wyjaśnienie
Jeśli N jest mniejsze niż 6, wypisz wartość bezwzględną N - 6. W przeciwnym razie uzyskaj iloraz i pozostałą część dzielenia N przez 6. Wywołaj funkcję rekurencyjnie na ilorazie, a następnie wywołaj ją na pozostałej części.
Objaśnienie kodu
źródło
APL (NARS), 27 znaków, 54 bajty
rozwiń rozwiązanie przez dana /codegolf//a/179980 w APL ... test:
źródło
C #, drukuj od początku do n, ??? bajty
Podziękowania dla @dana za wyrażenie lambda.
Operacja: Uruchom z 0 argumentem wiersza poleceń równym liczbie całkowitej, do której chcesz policzyć. (Należy zauważyć, że
a[0]
jest to odwołanie do niewymienionej tablicy wierszy poleceń i nie wiem, jak ją policzyć).źródło