Pertimbangkan urutan berikut:
1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 0, 1, ...
Digit genap dimulai dari 0 dan dikelompokkan menjadi run dengan panjang yang bertambah. Mereka diatur secara siklis, artinya mereka disortir dalam urutan menaik hingga 8 tercapai, dan kemudian bersepeda kembali dari 0 . 1 memisahkan run dari digit genap, dan itu juga memulai urutan. Mari kita bayangkan bagaimana urutan ini terbentuk:
1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 1, ...
- ---- ------- ---------- -------------
run length: 1 2 3 4 5 ...
position of 1: X X X X X X ...
even sequence: 0, 2, 4, 6, 8, 0, 2, 4, 6, 8, 0, 2, 4, 6, 8 ...
Metode Input dan Output yang dapat diterima:
Menerima bilangan bulat N sebagai input dan output istilah N urutan ini.
Terima bilangan bulat N sebagai input dan hasilkan syarat N pertama dari urutan ini.
Cetak urutan tanpa batas.
Anda dapat memilih pengindeksan 0 atau 1 untuk dua metode pertama.
Anda dapat bersaing dalam bahasa pemrograman apa pun , sambil menggunakan metode input dan output standar . Celah standar dilarang. Ini adalah kode-golf , sehingga kode terpendek dalam setiap bahasa menang.
Jawaban:
Haskell ,
5046 byteCobalah online!
1#cycle[0,2..8]
mengembalikan urutan sebagai daftar tanpa batas.-4 bytes terima kasih kepada Ørjan Johansen!
sumber
#
hanya angka. Cobalah online!Jelly , 10 byte
Mengembalikan yang pertama n item dari urutan.
Cobalah online!
Bagaimana itu bekerja
sumber
Unhalve
... Bukan begituDouble
?H
adalah separuh , jadiḤ
tidak berbahaya .ÆA
adalah arccosine , begituÆẠ
juga unarccosine .Sekam ,
121110 byteCobalah online!
Mencetak urutan tanpa batas.
Kalau tidak:
Cobalah online!
Penjelasan
Untuk solusi alternatif:
Kita juga bisa melakukannya
...ΘCN...
, karenaΘ
melakukan "elemen standar awal", yang menambahkan nol untuk daftar bilangan bulat dan daftar kosong untuk daftar daftar.sumber
Python 3 , 52 byte
Mengambil indeks berbasis 1 dan mengembalikan True atau float integral .
Cobalah online!
sumber
Python 2 , 51 byte
Mencetak seluruh urutan.
Cobalah online!
sumber
APL, 25 byte
Mengembalikan istilah ke-n.
Penjelasan
sumber
APL (Dyalog Unicode) ,
525956 byteCobalah online!
Ini adalah tradfn ( trad itional f unctio n ) mengambil satu argumen
k
dan mengembalikan pertamak
item dari urutan.Terima kasih kepada @GalenIvanov karena menunjukkan kesalahan dalam fungsinya. Terima kasih kepada @ Adám selama 3 byte.
Bagaimana itu bekerja:
Di bawah ini adalah
Dfn
( d irect f unctio n ) dan fungsi diam-diam yang juga memecahkan tantangan, baik disediakan oleh @ Adám.{⍵⍴1,∊1,⍨¨j⍴¨(+\¯1+j←⍳⍵)⌽¨⊂0,2×⍳4}
Coba online!⊢⍴1,∘∊1,⍨¨⍳⍴¨(⊂0,2×⍳4)⌽⍨¨(+\¯1+⍳)
Coba online!sumber
JavaScript (ES6),
625452 byteMengembalikan istilah N urutan, diindeks 0.
Demo
Tampilkan cuplikan kode
sumber
C (gcc), 84 byte
Cobalah online!
Fungsi (
f()
) yang mencetak urutan tanpa batas, dipisahkan oleh spasi.i
adalah panjang even-run saat ini.j
adalah indeks saat ini bahkan dijalankan(2*j+++i*i-i)%10
memberikan angka genap yang benar, mengingat i dan j (dan kenaikan j), setara dengan ((j + Tr (i))% 5) * 2, di mana Tr (x) adalah bilangan segitiga xth (yang merupakan jumlah genap angka-angka yang telah dicetak bahkan sebelum dijalankan;sumber
Java 8, 96 byte
Mencetak tanpa batas, setiap nomor di baris baru.
Penjelasan:
Coba di sini.
sumber
Batch, 85 byte
Menghasilkan jangka N urutan. Bekerja dengan menghitung angka segitiga berikutnya.
sumber
Perl 5 , 44 byte
Cobalah online!
Output tak terbatas
sumber
{...;redo}
bukannyado{...}while 1
J ,
464240 byte-6 byte berkat cole
Menghasilkan istilah N pertama dari urutan ini.
Bagaimana itu bekerja:
10|[:+:i.
- Menghasilkan daftar panjang N dari 0 2 4 6 8 0 2 4 ... Ini hanya membutuhkan mod 10 dari item yang digandakan dari daftar bilangan bulat mulai dari 0.[:;[:#:&.>2^i.
- Menghasilkan topeng bit untuk memotong daftar di atas.(1 berarti mulai): 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ... Ia menemukan 2 pangkat bilangan bulat non-negatif berturut-turut, mengubahnya menjadi biner, meratakannya daftar dan hanya mengambil item N pertama, sehingga panjang kedua daftar adalah sama.
;@(1,&.><;.1)
- Membagi (memotong) daftar angka genap menjadi sublists menurut peta satu dan nol, menambahkan sublist ke 1 dan akhirnya meratakan daftar yang dihasilkan]{.
- hanya mengambil item N pertama, menyingkirkan nomor tambahan dalam daftar karena 1s ditambahkan.Cobalah online!
sumber
{.({.[:;[:#:&.>2^i.);@(1,&.><;.1)(10|2*i.)
. Perubahan yang saya lakukan adalah menggunakan kait dan merefleksikan sayap kanan garpu untuk memanfaatkan cara kerja garpu. Saya suka2^i.
triknya. Saya mencoba untuk bekerja di jalan kiri garpu sekarang.(10|2*i.)
->10|2*i.
Gangguan Umum, 74 byte
Cobalah online!
Mencetak urutan tanpa batas.
sumber
Perl 5, 35 byte
coba online
sumber
Jelly , 17 byte
Cobalah online!
sumber
Proton , 55 byte
Cobalah online!
Mencetak urutan tanpa batas
sumber
i=0 j=-2while1{
...-2while
seperti Python danwhile1
karena saya membuat pengidentifikasi tidak dapat menjadi kata kunci diikuti oleh angkaJava (OpenJDK 8) , 107 byte
Cobalah online!
sumber
Mathematica, 68 byte
Mengembalikan istilah Nth
Cobalah online!
sumber
Bahasa Wolfram (Mathematica) , 61 byte
Cobalah online!
sumber
JavaScript, 45 byte
1 diindeks:
0 diindeks:
Tampilkan cuplikan kode
sumber
Ruby ,
4846 byteCobalah online!
Cetak urutan tanpa batas
sumber
bash, 42 byte
atau 34 jika valid
coba online
sumber