Eine Sprungzahl ist definiert als eine positive Zahl n, bei der sich alle Paare aufeinanderfolgender Dezimalstellen um 1 unterscheiden. Außerdem werden alle einstelligen Zahlen als Sprungzahlen betrachtet. z.B. 3, 45676, 212 sind Sprungzahlen, 414 und 13 jedoch nicht. Die Differenz zwischen 9 und 0 wird nicht als 1 betrachtet
Die Herausforderung Erstellen Sie ein Programm, das eines der folgenden Ergebnisse ausgibt:
- Bei einer Eingabe
n
werden die ersten Sprungzahlen ausgegebenn
. - Bei einer Eingabe
n
wird dern
dritte Term der Sequenz ausgegeben .
Hinweis
- Jedes gültige E / A-Format ist zulässig
- 1-Index oder 0-Index ist erlaubt (bitte angeben)
Hier sind einige springende Zahlen:
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, ...
Dies ist auch A033075
n
dann liegt es an Ihnen.Antworten:
Haskell , 57 Bytes
Probieren Sie es online!
quelle
Gelee , 8 Bytes
Ein vollständiges Programm, das eine Ganzzahl
n
von STDIN akzeptiert und eine Liste der erstenn
positiven Sprungzahlen druckt .Probieren Sie es online!
Wie?
Akzeptable inkrementelle Unterschiede zwischen den Ziffern sindxx=x seit:
1
und-1
während andere[-9,-2]+[2,9]
nicht sind. Dies stimmt mit ganzen Zahlen überein, die unveränderlich sind, wenn sie zu sich selbst erhoben werden. dhquelle
05AB1E (Legacy) , 5 Byte
Die Eingabe ist 1-indiziert.
Code:
Verwendet die 05AB1E- Codierung. Probieren Sie es online!
Erläuterung
quelle
Python 2 ,
7975 Bytes-4 Bytes von xnor
Probieren Sie es online!
Abgeleitet von Chas Brown ‚s Antwort . Die Hilfsfunktion gibt
g(i)
zurück, obi
es sich um eine springende Zahl handelt. Aus den letzten beiden Ziffern einer Zahln
die absolute Differenz 1 haben, istn%100%11
sie entweder 1 oder 10, alson%100%11%9
1.quelle
%11
. Sie können dies tun,f=lambda n,i=1:n and-~f(n-g(i),i+1)
wenn Sie auf eine Indizierung umstellen.APL (Dyalog Unicode) , 36 Byte SBCS
1-indiziert. Vielen Dank an dzaima für ihre Hilfe beim Golfen.
Edit: -15 Bytes von ngn.
Probieren Sie es online!
Erläuterung
Wir haben
f⍣g⍣h
, wo, wie⍣
ein Betreiber, APL dies übersetzt(f⍣g)⍣h
. (Im Gegensatz zu Funktionen, bei denen2×3+1
übersetzt wird2×(3+1)
)quelle
10⊥⍣¯1⊢⍺
->⍎¨⍕⍺
⍣
statt Rekursion:{1+⍣{∧/1=|2-/⍎¨⍕⍺}⍣⍵⊢0}
oder1+⍣{∧/1=|2-/⍎¨⍕⍺}⍣⎕⊢0
C (gcc) 90 Bytes
Probieren Sie es online!
quelle
Japt, 14 Bytes
Gibt den ersten
n
Term 1-indiziert aus.Versuch es
(Ich weiß, ich weiß, ich soll eine Pause machen, aber ich bin im Golf-Rückzug!)
quelle
Python 2 ,
8887 BytesProbieren Sie es online!
Gibt die 0-indizierte Sprungzahl zurück (dh f (0) => 1 usw.).
quelle
Haskell , 69 Bytes
Probieren Sie es online!
quelle
g
Nachdem dies behoben wurde, können Sie 3 Bytes kürzer machen, indem Sie es so umschreiben, dass es keine Punkte enthält, und dann Folgendes verwenden<*>
:g=all((==1).abs).(zipWith(-)<*>tail).map(read.pure).show
JavaScript (ES7), 60 Byte
Probieren Sie es online!
quelle
Gelee , 9 Bytes
-1 von Jonathan Allan
Probieren Sie es online!
1-indiziert.
quelle
Schnell, 228 Bytes
Probieren Sie es online!
quelle
Python 3 ,
122121 BytesProbieren Sie es online!
-1 Byte durch Umschalten
f
vom Drucken auf eine Generatorfunktion.g
ist eine rekursive Hilfsfunktion, die feststellt, ob eine Zeichenfolge vorhanden ists
eine "springende Zeichenfolge" ist (dies funktioniert, da die Zeichencodes für 0 bis 9 in Reihenfolge und zusammenhängend sind).f
ist eine Generatorfunktion, dien
die erstenn
Sprungzahlen aufnimmt und liefert .quelle
R , 85 Bytes
Probieren Sie es online!
Ich vermute, das kann mehr golfen werden. Liest die Nummer mit
scan()
und gibt die entsprechende Sprungnummer aus.quelle
Perl 5 , 56 Bytes
Probieren Sie es online!
1-indiziert, gibt die n- te Sprungnummer aus
quelle
Wolfram Language (Mathematica) , 85 Byte
Probieren Sie es online!
gibt die n-te Zahl zurück
quelle
Faktor 129 Bytes
Probieren Sie es online!
Gibt die ersten
n
Sprungzahlen ausquelle
Katholikon , 5 Bytes
Probieren Sie es online!
quelle