Liczba skokowa jest zdefiniowana jako liczba dodatnia n, której wszystkie pary kolejnych cyfr dziesiętnych różnią się o 1. Ponadto wszystkie liczby jednocyfrowe są uważane za liczby skokowe. na przykład. 3, 45676, 212 to numery skokowe, ale 414 i 13 nie. Różnicy między 9 a 0 nie uważa się za 1
Wyzwanie Utwórz program, który generuje jeden z następujących wyników:
- Biorąc pod uwagę dane
n
wyjściowe, pierwszen
liczby skokowe. - Biorąc pod uwagę dane
n
wyjściowe, terminn
th sekwencji.
Uwaga
- Dowolny prawidłowy format we / wy jest dozwolony
- 1-indeksowy lub 0-indeksowy jest dozwolony (proszę określić)
Oto kilka liczb skokowych:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 21, 23, 32, 34, 43, 45, 54, 56, 65, 67, 76, 78, 87, 89, 98, 101, 121, 123, 210, 212, 232, 234, 321, 323, 343, 345, 432, 434, 454, 456, 543, 545, 565, 567, 654, 656, 676, 678, 765, 767, 787, 789, 876, ...
To także jest A033075
n
, to zależy od ciebie.Odpowiedzi:
Haskell , 57 bajtów
Wypróbuj online!
źródło
Galaretka , 8 bajtów
Pełny program akceptujący liczbę całkowitą,
n
od STDIN, który wypisuje listę pierwszychn
dodatnich liczb skokowych.Wypróbuj online!
W jaki sposób?
Dopuszczalne różnice między przyrostowe cyfryxx=x ponieważ:
1
i-1
podczas gdy inni ze[-9,-2]+[2,9]
nie. Wyrównuje się to do liczb całkowitych, które są niezmienne, gdy są wywoływane dla siebie. tj.źródło
05AB1E (starsza wersja) , 5 bajtów
Dane wejściowe są indeksowane 1.
Kod:
Wykorzystuje kodowanie 05AB1E . Wypróbuj online!
Wyjaśnienie
źródło
Python 2 ,
7975 bajtów-4 bajty xnor
Wypróbuj online!
Pochodzące z Chas Brown „s odpowiedź . Funkcja pomocnika
g(i)
zwraca, czyi
jest liczbą skokową. Jeśli dwie ostatnie cyfry numerun
mają bezwzględną różnicę 1, ton%100%11
będzie 1 lub 10, a więcn%100%11%9
1.źródło
%11
. Możesz to zrobić,f=lambda n,i=1:n and-~f(n-g(i),i+1)
jeśli przejdziesz na indeksowanie z jednym indeksem.APL (Dyalog Unicode) , 36 bajtów SBCS
1-indeksowany. Dzięki dzaima za pomoc w grze w golfa.
Edycja: -15 bajtów z ngn.
Wypróbuj online!
Wyjaśnienie
Mamy
f⍣g⍣h
, gdzie, jako⍣
operator, APL tłumaczy to(f⍣g)⍣h
. (W przeciwieństwie do funkcji, w których2×3+1
jest tłumaczony2×(3+1)
)źródło
10⊥⍣¯1⊢⍺
->⍎¨⍕⍺
⍣
zamiast rekurencji:{1+⍣{∧/1=|2-/⍎¨⍕⍺}⍣⍵⊢0}
lub1+⍣{∧/1=|2-/⍎¨⍕⍺}⍣⎕⊢0
C (gcc) , 90 bajtów
Wypróbuj online!
źródło
Japt, 14 bajtów
Wysyła pierwszy
n
termin, indeksowany 1.Spróbuj
(Wiem, wiem, powinienem zrobić sobie przerwę, ale wycofuję się z gry w golfa!)
źródło
Python 2 ,
8887 bajtówWypróbuj online!
Zwraca 0-indeksowaną liczbę skoków (tj. F (0) => 1 itd.).
źródło
Haskell , 69 bajtów
Wypróbuj online!
źródło
g
skrócić 3 bajty, przepisując go tak, aby był bezcelowy, a następnie używając<*>
:g=all((==1).abs).(zipWith(-)<*>tail).map(read.pure).show
JavaScript (ES7), 60 bajtów
Wypróbuj online!
źródło
Galaretka , 9 bajtów
-1 autorstwa Jonathan Allan
Wypróbuj online!
1-indeksowany.
źródło
Szybki, 228 bajtów
Wypróbuj online!
źródło
Python 3 ,
122121 bajtówWypróbuj online!
-1 bajt poprzez zmianę
f
z drukowania na funkcję generatora.g
to rekurencyjna funkcja pomocnicza, która określa, czy ciąg znakóws
jest „łańcuchem skokowym” (działa, ponieważ kody znaków od 0 do 9 są w porządku i ciągłe).f
to funkcja generatora, która przyjmujen
i zwraca pierwszen
skaczące liczby.źródło
R , 85 bajtów
Wypróbuj online!
Podejrzewam, że można bardziej grać w golfa. Odczytuje liczbę za pomocą
scan()
i wyświetla odpowiedni numer skoku.źródło
Perl 5 , 56 bajtów
Wypróbuj online!
1-indeksowany, zwraca n- tą liczbę skokową
źródło
Wolfram Language (Mathematica) , 85 bajtów
Wypróbuj online!
zwraca n-tą liczbę
źródło
Współczynnik , 129 bajtów
Wypróbuj online!
Wysyła pierwsze
n
skaczące liczbyźródło
Catholicon , 5 bajtów
Wypróbuj online!
źródło