Nomor lompatan didefinisikan sebagai angka positif n yang semua pasangan angka desimal berurutannya berbeda dengan 1. Selain itu, semua angka tunggal dianggap sebagai nomor lompat. misalnya. 3, 45676, 212 adalah angka melompat tetapi 414 dan 13 tidak. Perbedaan antara 9 dan 0 tidak dianggap sebagai 1
Tantangannya Buat program yang menampilkan salah satu dari hasil berikut:
- Diberikan input
n
outputn
nomor lompatan pertama . - Diberikan input
n
output istilahn
th urutan.
Catatan
- Setiap format I / O yang valid diizinkan
- 1-indeks atau 0-indeks diizinkan (harap sebutkan)
Berikut ini beberapa nomor lompat:
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, ...
Ini juga A033075
n
maka terserah Anda.Jawaban:
Haskell , 57 byte
Cobalah online!
sumber
Jelly , 8 byte
Program lengkap yang menerima bilangan bulat,,
n
dari STDIN yang mencetak daftarn
nomor lompatan positif pertama .Cobalah online!
Bagaimana?
Perbedaan inkremental yang dapat diterima antara digit adalahxx= x
1
dan-1
sementara yang lain dari[-9,-2]+[2,9]
tidak. Ini sejalan dengan bilangan bulat yang tidak berubah ketika dinaikkan ke diri mereka sendiri. yaitu sejak:sumber
05AB1E (warisan) , 5 byte
Input diindeks 1.
Kode:
Menggunakan penyandian 05AB1E . Cobalah online!
Penjelasan
sumber
Python 2 ,
7975 byte-4 byte oleh xnor
Cobalah online!
Berasal dari Chas Brown 's jawaban . Fungsi helper
g(i)
mengembalikan apakahi
nomor lompatan. Jika dua digit terakhir dari angkan
memiliki selisih absolut 1, makan%100%11
akan menjadi 1 atau 10, jadin%100%11%9
akan menjadi 1.sumber
%11
. Anda dapat melakukannyaf=lambda n,i=1:n and-~f(n-g(i),i+1)
jika Anda beralih ke pengindeksan satu.APL (Dyalog Unicode) , 36 byte SBCS
1-diindeks. Terima kasih kepada dzaima atas bantuan mereka dalam bermain golf ini.
Edit: -15 byte dari ngn.
Cobalah online!
Penjelasan
Kami memiliki
f⍣g⍣h
, di mana, seperti⍣
operator, APL menerjemahkannya ke(f⍣g)⍣h
. (Berbeda dengan fungsi di mana2×3+1
diterjemahkan2×(3+1)
)sumber
10⊥⍣¯1⊢⍺
->⍎¨⍕⍺
⍣
bukannya rekursi:{1+⍣{∧/1=|2-/⍎¨⍕⍺}⍣⍵⊢0}
atau1+⍣{∧/1=|2-/⍎¨⍕⍺}⍣⎕⊢0
C (gcc) , 90 byte
Cobalah online!
sumber
Japt, 14 byte
Menghasilkan
n
istilah th pertama , 1-diindeks.Cobalah
(Aku tahu, aku tahu, aku seharusnya istirahat tapi aku dalam penarikan golf!)
sumber
Python 2 ,
8887 byteCobalah online!
Mengembalikan nomor lompatan 0-diindeks (yaitu, f (0) => 1, dll).
sumber
Haskell , 69 byte
Cobalah online!
sumber
g
3 byte lebih pendek dengan menulis ulangnya menjadi pointfree, lalu menggunakan<*>
:g=all((==1).abs).(zipWith(-)<*>tail).map(read.pure).show
JavaScript (ES7), 60 byte
Cobalah online!
sumber
Jelly , 9 byte
-1 oleh Jonathan Allan
Cobalah online!
1-diindeks.
sumber
Swift, 228 byte
Cobalah online!
sumber
Python 3 ,
122121 byteCobalah online!
-1 byte dengan mengubah
f
dari pencetakan, ke fungsi generator.g
adalah fungsi pembantu rekursif yang menentukan apakah strings
adalah "string lompat" (ini berfungsi karena kode karakter untuk 0 hingga 9 berurutan dan berdampingan).f
adalah fungsi generator yang mengambiln
dan menghasilkann
angka lompatan pertama .sumber
R , 85 byte
Cobalah online!
Curiga ini bisa lebih banyak golf. Membaca nomor menggunakan
scan()
dan menampilkan nomor lompatan yang sesuai.sumber
Perl 5 , 56 byte
Cobalah online!
1-diindeks, menampilkan nomor lompat ke- n
sumber
Bahasa Wolfram (Mathematica) , 85 byte
Cobalah online!
mengembalikan nomor ke-n
sumber
Faktor , 129 byte
Cobalah online!
Menghasilkan
n
angka melompat pertamasumber
Catholicon , 5 byte
Cobalah online!
sumber