Ini adalah repost dari tantangan lama , untuk menyesuaikan persyaratan I / O dengan standar terbaru kami. Ini dilakukan sebagai upaya untuk memungkinkan lebih banyak bahasa untuk berpartisipasi dalam tantangan tentang urutan populer ini. Lihat posting meta ini untuk diskusi tentang repost.
Urutan Kolakoski adalah urutan referensial diri yang menyenangkan, yang mendapat kehormatan sebagai urutan OEIS A000002 (dan itu jauh lebih mudah untuk dipahami dan diimplementasikan daripada A000001). Urutan dimulai dengan 1 , hanya terdiri dari 1 dan 2 dan urutan elemen a (n) menjelaskan panjang n th menjalankan 1 s atau 2 s dalam urutan. Ini secara unik mendefinisikan urutan menjadi (dengan visualisasi berjalan di bawahnya):
1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1,2,1,1,2,...
= === === = = === = === === = === === = = === = = === === = === =
1, 2, 2, 1,1, 2, 1, 2, 2, 1, 2, 2, 1,1, 2, 1,1, 2, 2, 1, 2, 1,...
Tugas Anda, tentu saja, untuk mengimplementasikan urutan ini. Anda dapat memilih salah satu dari tiga format untuk melakukannya:
- Ambil input n dan output istilah ke- n dari urutan, di mana n dimulai dari 0 atau 1 .
- Ambil input n dan output istilah hingga dan termasuk istilah n urutan, di mana n dimulai baik dari 0 atau 1 (yaitu mencetak n pertama atau n pertama + 1 syarat).
- Nilai output dari urutan tanpa batas.
Dalam kasus kedua dan ketiga, Anda dapat memilih format daftar yang masuk akal dan tidak ambigu. Tidak apa-apa jika tidak ada pemisah antara elemen, karena mereka selalu satu digit menurut definisi.
Dalam kasus ketiga, jika kiriman Anda adalah fungsi, Anda juga bisa mengembalikan daftar tanpa batas atau generator dalam bahasa yang mendukungnya.
Anda dapat menulis sebuah program atau fungsi dan menggunakan salah satu metode standar kami untuk menerima input dan memberikan output. Perhatikan bahwa celah ini dilarang secara default.
Ini adalah kode-golf , sehingga jawaban terpendek yang valid - diukur dalam byte - menang.
Jawaban:
Jelly , 7 byte
Ini adalah program lengkap yang mencetak istilah n pertama .
Cobalah online!
Bagaimana itu bekerja
Contoh dijalankan
Misalkan n = 5 .
Doa pertama dari rantai berulang 1, 2 secara siklik untuk mencapai panjang 5 , kemudian setiap elemen 5 kali, dan akhirnya memotong hasilnya menjadi panjang 5 .
Ini menghasilkan daftar panjang 5 . Elemen pertama adalah elemen pertama dari urutan Kolakoski.
Doa kedua rantai mengulangi 1, 2 siklis untuk mencapai panjang 5 , maka mengulangi k th elemen j kali, di mana j adalah k th elemen dari daftar sebelumnya, dan akhirnya memotong hasil dengan panjang 5 .
Ini menghasilkan daftar panjang 5 lainnya . Dua elemen pertama adalah dua elemen pertama dari urutan Kolakoski.
Proses berlanjut untuk tiga iterasi lagi.
Ini adalah lima elemen pertama dari urutan Kolakoski.
sumber
Python 2 , 51 byte
Mencetak tanpa batas. Bangun daftar
l
ketika sedang diulangi. Untuk setiap entrix
daril
, menambahkanx
salinan1
atau2
, mana yang berlawanan elemen terakhir saat ini.Kesulitan utama adalah berurusan dengan fragmen referensi-diri awal
[1,2,2]
. Kode ini hanya mencetak awal1,2
dan hasil dari sana. Biaya pencetakan tambahan 12 byte. Tanpa itu:39 byte , hilang dua entri pertama:
Pendekatan lain adalah menginisialisasi dua entri pertama secara khusus. Kami menginisialisasi
l
sebagai[0,0,2]
sehingga dua entri pertama tidak menyebabkan menambahkan, tetapiprint x or n
membuat mereka dicetak sebagain
.51 byte
Perbaikan lain adalah menginisialisasi
l=[1]
, melacak pergantian secara manualn
, dan memperbaiki pencetakan:51 byte
Tanpa
(l==[1,1])+
, semuanya berfungsi kecuali urutan cetak dimulai,1,1,2
bukan1,2,2
. Harus ada cara yang lebih baik untuk mengenali kita pada langkah kedua ini.Dan perbaikan aneh lainnya, entah bagaimana jumlah byte yang sama:
51 byte
sumber
Wumpus ,
1311 byteCobalah online!
Mencetak urutan tanpa batas tanpa pemisah.
Saya benar-benar terkejut dengan betapa singkatnya ini.
Penjelasan
Ide dasarnya adalah untuk menjaga urutan pada tumpukan dan berulang kali menggunakan elemen paling bawah untuk menghasilkan proses lain dan kemudian mencetaknya. Kami secara efektif menyalahgunakan tumpukan sebagai antrian di sini. Kita juga dapat menyimpan beberapa byte dengan bekerja
0
dan1
(hanya menambah output) daripada1
dan2
, karena cara ini kita tidak perlu secara eksplisit menginisialisasi stack dengan a1
dan kita dapat menggunakan negasi logis untuk beralih di antara dua nilai.sumber
Brachylog ,
30 26 25 23 17 1614 byteMenghasilkan nilai n pertama . Menggunakan "variabel output"
.
untuk input, dan output ke "variabel input"?
. Cobalah online!Penjelasan
Saya cukup senang dengan bagaimana deklaratif ini ternyata: program ini pada dasarnya adalah deskripsi tingkat tinggi dari daftar output dan hubungannya dengan input.
Karena
{1|2}ᵐ
mencoba daftar dalam urutan leksikografis, output akan dimulai dengan 1.sumber
Sekam , 10 byte
Mengembalikan nilai n pertama . Cobalah online!
Penjelasan
Untuk input 20, prosesnya seperti ini:
sumber
Java 10,
15510810510097 byteMencetak tanpa batas tanpa pembatas.
-3 byte setelah tip tidak langsung dari @Neil .
-5 byte terima kasih kepada @MartinEnder .
-3 byte mengkonversi Java 8 ke Java 10.
Penjelasan:
Cobalah online (waktu habis setelah 60 detik pada TIO).
sumber
[1,2,2]
dan pergi dari sana) dan saya menulis jawaban 155 byte (yang sekarang golf dengan menggunakan String bukan Daftar).(3-i)
bukan(1+i%2)
?i
bukan 1 atau 2, ini adalah indeks string.Jelly , 10 byte
Mengembalikan istilah ke- n .
Cobalah online!
Bagaimana itu bekerja
sumber
Haskell , 33 byte
Cobalah online!
Ørjan Johansen menyimpan 7 byte menggunakan pola yang tak terbantahkan untuk memaksa awalan.
sumber
n:
pada awal ekspresi Anda tidak perlu tahux
apakah ada untuk menghasilkan yang pertaman
. Tetapi Anda perlu pola untuk menjadi malas untuk menghindari fungsi memeriksanya sebelum sampai ken:
.Gol> <> ,
87 byteCobalah online!
Penjelasan
Ini adalah port dari jawaban Wumpus saya . Gol> <> pada dasarnya adalah bahasa yang memiliki semua fitur yang diperlukan untuk mem-port jawaban Wumpus (khususnya, nol implisit di bagian bawah tumpukan, "duplikat" yang diterapkan "pop, push, push", dan perintah rotasi stack), tetapi :
00.
untuk melompat kembali ke awal.K
, yaitu "pop N, lalu duplikat elemen N kali berikutnya", yang dapat menggantikan?=
, menyimpan byte lain.Jadi pemetaan dari Wumpus ke Gol> <> menjadi:
sumber
Bahasa Pemrograman Shakespeare ,
594 583572 byteTerima kasih kepada Ed Wynn untuk -10 byte!
Cobalah online!
Ini adalah versi paripurna dari solusi ungolfed Ed Wynn , mulai dari solusi 828 byte yang dia tautkan di komentar dan menjadi sedikit gila dari sana.
Penjelasan:
sumber
> <> ,
1312 byteCobalah online!
Port jawaban Wumpus Martin Ender . Sayangnya,
><>
tidak memiliki kenaikan atau perintah pembalik juga tidak memiliki 0s implisit di bagian bawah tumpukan, jadi ini berakhir menjadi sedikit lebih lama.sumber
JavaScript,
67666058525150 byteNah, itu membuat otak saya gatal lebih dari yang seharusnya! Memulai kembali
n
istilah ke-0, diindeks.5 + 1 byte disimpan berkat tsh menggaruk otak gatal saya!
Menguji
Cuplikan di bawah ini akan menampilkan 50 istilah pertama.
Tampilkan cuplikan kode
Penjelasan
Ini adalah salah satu kesempatan langka ketika kita dapat mendeklarasikan beberapa variabel di luar ruang lingkup fungsi kita, memodifikasinya di dalam fungsi dan masih dapat menggunakannya kembali pada panggilan fungsi berikutnya.
sumber
n=>(g=s=>s[n]||g(s+(++x%2+1)*(10*s[x]-9)))('122',x=1)
s='122',x=1,g=n=>s[n]||g(n,s+=(++x%2+1)*(10*s[x]-9))
dianggap pengajuan yang valid?s[n]||
jelas merupakan kasus tidak melihat kayu untuk pohon! Saran kedua Anda tidak akan valid, karena fungsi hanya dapat dipanggil satu kali;s
&x
perlu diinisialisasi dengan setiap panggilan.s
danx
tidak tersentuh oleh kode lain antara masing-masing panggilan (yang secara default).s[x]+0-9
adalah trik yang cukup rapiPython (2 dan 3),
6560 byteMengembalikan entri ke- n , diindeks 0.
Alternatif (65 byte):
sumber
[1,2,2]
nilai awal disum
Haskell , 48 byte
-1 byte terima kasih kepada nimi. -2 byte terima kasih kepada Lynn.
Cobalah online!
Ulangi setiap elemen posisinya mod 2 + 1 kali.
sumber
c=1:2:c
brainfuck , 61 byte
Cobalah online!
Mencetak angka sebagai kode char tanpa batas. Untuk kejelasan, inilah versi yang mencetak dalam angka (kecuali untuk dua elemen pertama, yang cukup mudah untuk diverifikasi).
Bagaimana itu bekerja:
sumber
05AB1E ,
129 byteDisimpan 3 byte berkat Grimy
Mencetak pertama n item.
Cobalah online!
Penjelasan
sumber
2L[2LÞsÅΓ
.∞[2LÞsÅΓ
.Δ2LÞsÅΓI∍
untuk versi yang mencetak n item pertama yang diberi input n.05AB1E , 15 byte
Cobalah online! atau dengan batas iterasi
Penjelasan
sumber
¸«
,=
akan mencetaknya selama 2 byte disimpan.ƵLS[NÌ©èF®É>=
, tidak perlu menipu jika Anda tidak mengkonsumsi.Python 3 ,
5554 byteCobalah online!
sumber
J , 12 byte
Fungsi argumen tunggal mengambil n dan menghasilkan istilah n pertama . Cobalah online!
Hanya merapikan jawaban lama saya untuk pertanyaan lama.
I.
adalah kata kerja yang mengambil array angka dan mengeluarkan daftar indeks, sehingga jika item k -th dalam array adalah n , maka indeks k muncul n kali. Kami akan menggunakannya untuk mem-bootstrap urutan Kolakowski naik dari seed awal. Setiap langkah akan dilanjutkan sebagai berikut:Jika kami melakukan operasi ini (
1+2|I.
) berulang-ulang mulai dari 10, akan terlihat seperti ini:Perhatikan bagaimana kita mendapatkan istilah yang lebih banyak dan lebih benar setiap kali, dan setelah beberapa saat n istilah pertama diperbaiki. Jumlah iterasi yang diperlukan untuk menyelesaikannya sulit untuk dijelaskan secara tepat, tetapi tampaknya secara kasar logaritmik dalam n , jadi jika kita hanya menjalankannya n kali (
^:]
) itu harus baik-baik saja. (Lihat urutan OEIS lainnya untuk info lebih lanjut: panjang generasi , jumlah parsial .)Setelah kita selesai melakukannya, yang harus kita lakukan adalah mengambil n istilah pertama menggunakan
$
. Konstruksi$v
untuk kata kerja apa punv
adalah contoh dari hook, dan memberikannyan
sebagai argumen akan dieksekusin $ (v n)
.Berikut adalah versi lama 13-byte yang jauh lebih boros waktu dan ruang:
($1+2|I.)^:_~
. Ini memotong input pada setiap langkah, sehingga kita dapat menjalankan tepat sebanyak yang diperlukan untuk menyelesaikan, bukan berkali-kali secara linear.sumber
I.
. Saya selalu ingin melihat fitur salinan yang digunakan di golf.Fueue , 30 byte
Fueue adalah esolang berbasis antrian di mana program yang sedang berjalan dan datanya sama-sama berada dalam antrian yang sama, eksekusi berjalan di sekitar antrian dalam siklus, dan pemrograman membutuhkan banyak sinkronisasi untuk menjaga agar tidak ada yang dieksekusi pada waktu yang salah.
Cobalah online!
Di atas mencetak daftar angka yang tak berujung sebagai kode kontrol. Untuk 34 byte, ia dapat mencetak angka aktual:
Cobalah online!
Sisa dari penjelasan menggunakan versi yang terakhir.
Ringkasan elemen Fueue
Antrian Fueue dapat berisi elemen-elemen berikut:
)
fungsi deblocks mereka, dan~
(menukar dua elemen berikut),:
(duplikat elemen berikutnya), dan)
(deblock blok berikut).Ikhtisar tingkat tinggi
Selama loop utama program, antrian terdiri dari:
[49]
dan[50:]
, masing-masing.Jejak tingkat rendah dari 10 perintah pertama
Panduan dari iterasi loop penuh penuh
Ruang kosong opsional telah dimasukkan untuk memisahkan perintah.
Siklus 1:
49
mencetak1
.)
tidak aktif, menunggu untuk disatukan dengan blok loop utama.50
cetakan2
.:
menduplikasi blok loop utama (yang membutuhkan salinan untuk replikasi diri.)Siklus 2:
)
deblocks blok loop utama pertama, membuatnya mulai menjalankan siklus berikutnya.Siklus 3:
[50:]
mewakili digit pertama yang diproduksi dalam rantai,2
belum di-deblock. Berikut)
ini pada akhirnya akan melakukannya setelah sisa dari loop utama telah melewatinya.~)~:~
adalah penundaan satu siklus dari golf (menggunakan swap dan salinan)~)~~
.[[49]:~))~:~~]
tidak aktif.~
menukar blok loop utama berikut melewati[50:]
blok digit.Siklus 4:
)
masih menunggu,~)~
menghasilkan~)
,~
bertukar[[49]:~))~:~~]
melewati[50:]
blok digit.Siklus 5:
~
swap)
melewati[50:]
blok digit.Siklus 6: Yang pertama
)
sekarang deblocks[50:]
blok digit, yang berikutnya)
deblocks subprogram[[49]:~))~:~~]
.Siklus 7:
50
mencetak2
,:
menduplikasi[49]
blok digit yang baru saja diproduksi , membuat proses dua1
detik.:~))~:~
adalah penundaan satu siklus~~))~:
.~
menukar blok loop utama yang tersisa melewati yang pertama[49]
.Siklus 8:
~~))
adalah penundaan satu siklus)~)
.~
swap:
melewati yang saat ini dilalui[49]
.Siklus 9:
~
bertukar)
masa lalu[49]
.:
menduplikasi blok loop utama.Siklus 10:
)
Deblocks pertama[49]
blok angka yang baru saja dilalui, yang kedua)
restart loop utama untuk melintasi yang berikutnya (di atas ditunjukkan pada awal antrian.)sumber
x86,
4137353328 byteSaya senang bermain-main dengan instruksi x86 yang berbeda, karena ini adalah jawaban x86 "non-sepele" pertama saya. Saya sebenarnya belajar x86-64 terlebih dahulu, dan saya menyimpan banyak byte hanya dengan mengubah program saya menjadi 32-bit.
Ternyata algoritma yang saya gunakan dari OEIS mendorong nilai ke array, yang membuatnya setuju dengan x86 dan menyimpan nilai pada stack (perhatikan MIPS tidak memiliki instruksi stack).
Saat ini program mengambil
N
nilai sebagai inputecx
dan mengembalikan alamat dalamebp
array dengan elemen n yang mewakili nilai ke-n dalam urutan. Saya berasumsi kembali pada stack dan menghitung nilai tambahan adalah valid (kami menganggap apa yang di luar array sebagai sampah).Changelog
-4 byte dengan komputasi
x = 2 - n%2
denganxor
setiap iterasi-2 byte dengan menggunakan do-while bukan while.
-2 byte dengan mendorong nilai awal 1, 2, 2 menggunakan
eax
-5 byte dengan tidak menyimpan
n
secara eksplisit dan bukannya menjalankanN
waktu loopObjdump:
sumber
C (gcc) ,
7271656462 byte-9 byte berkat @ceilingcat
Cobalah online!
Menghasilkan nilai dari urutan tanpa batas (opsi 3 dari tantangan)
sumber
for($x=$y=-1;;$y=$y+1|$f&.5*$x^=$f=$y&-$y-2)echo$x&1?:2;
. 2)50-x%2
harus menyimpan satu byte untuk Anda. 3) Saya mencoba menjalankannyax=y=1
; tetapi sejauh ini tidak bisa melakukan operasi dengan benar. Bisakah kamu?Perl 5 , 36 byte
Masih merupakan modifikasi sepele dari solusi TPR (0,3) klasik:
Keluarkan seri dari
0
hinggan
Cobalah online!
sumber
Javascript ES6 -
717068 byte1 bit disimpan berkat Neil
Tanks to Shaggy untuk memperbaiki kesalahan saya, juga untuk menghemat 1 bit.
sumber
x=0
bukanx=1
), tetapi @Shaggy memang benar: ini tidak berfungsi dalam bentuk saat ini (saya menambahkan,i=100;i-->0
sementara untuk hanya melihat 100 item pertama, daripada harus tunggu 60 detik sebelum melihat output). Tidak tahu mengapa itu tidak berhasil. JS bukan hal saya.1.
memulaix
ke 0 bukannya 1 (seperti yang disebutkan @KevinCruijssen) dan2.
memeriksa apakahx
karakter th dalam string, yang hanya bisa 1 atau 2, lebih besar dari 49.(_[x]*10-9)
dari(_[x]>1?11:1)
Diaplikasikan , 89 byte
Menentukan fungsi
K
yang tidak menggunakan argumen dan mengembalikan urutan Kolakoski sebagai daftar tanpa batas. Cobalah online!Pendekatan ini terinspirasi oleh jawaban Haskell yang sepenuhnya manusiawi . Pendekatan asli saya lebih lama dan mungkin O (2 ^ n). : ^ P
Tidak disatukan
Daftar kembali dimulai dengan
(1 2)
. Setelah itu, untuk menghasilkan sisanya (membaca dari dalam ke luar):(kolakoski)
untuk mendapatkan daftar urutan Kolakoski (karena evaluasi malas, tidak masalah bahwa daftar belum sepenuhnya dihasilkan)(cycle (list 1 2))
membuat daftar tanpa batas(1 2 1 2 1 2 ...)
repeat-val
. Ini akan mengulangi1
atau2
daricycle
daftar satu atau dua kali tergantung pada nilai yang terkait dalam daftar Kolakoski. Hasil:((1) (2 2) (1 1) ...)
flatten
daftar itu menjadi(1 2 2 1 1 ...)
(concat (list 1 2)
, jadi kami dua istilahdrop
pertama dari daftar yang dihasilkan untuk menghindari duplikasi.sumber
Stax , 12 byte
Jalankan dan debug itu
Ini adalah representasi ascii dari program yang sama.
Itu memperluas urutan x kali di mana x adalah input. Kemudian output x th elemen, 0-diindeks.
Berikut adalah solusi 12-byte bonus yang menghasilkan output sebagai aliran tanpa batas. Tekan Jalankan untuk memulai.
sumber
R, 63 byte atau 61 byte
Implementasi 1: mencetak istilah urutan ke- n .
Implementasi 2: mencetak n istilah pertama dari urutan.
(Perbedaannya hanya pada baris terakhir.)
Ya, ya, Anda mungkin mengeluh bahwa solusi saya tidak efisien, yang menghitung lebih banyak persyaratan daripada yang dibutuhkan, tetapi masih ...
Pembaruan: Terima kasih kepada @Giuseppe karena telah memangkas 9 byte.
sumber
a=c(a,rep(2-n%%2,a[n]))
sebagai gantifor
loop kedua untuk memotong beberapa byte.Bahasa Pemrograman Shakespeare, 575 byte (tetapi cacat), atau 653 atau 623 byte
Dalam kategori SPL yang diperebutkan, ini akan mengalahkan entri Jo King saat ini (583 bytes), kecuali bahwa itu rusak: Pertama, itu tidak berjalan dalam versi TIO (menerapkan situs web SPL) - tetapi itu berjalan di Perl versi , jadi mungkin itu bukan cacat serius. Namun, kedua, itu tidak mencetak dua digit pertama. Jika kita membiarkan cacat itu dalam solusi Jo King, maka solusi yang rusak itu akan menjadi 553 byte, mengalahkan solusi yang rusak saya.
Solusi saya gagal pada TIO karena dua alasan: kami mencoba mengandalkan tumpukan kosong yang mengembalikan nol ketika muncul; dan kami pergi ke adegan pertama, dengan "[Enter Ford and Puck]" meskipun tidak ada yang meninggalkan panggung. Ini hanyalah peringatan dalam versi Perl. Jika saya memperbaiki kesalahan ini dan memasukkan dua digit pertama, saya mencapai 653 byte:
Cobalah online!
Saya dapat menghasilkan urutan penuh dalam implementasi Perl menggunakan 623 byte:
Namun, saya akan menunjukkan bahwa solusi ini cepat dibandingkan dengan banyak solusi lainnya, dan menggunakan jumlah memori logaritmik daripada menyimpan seluruh daftar. (Ini mirip dengan solusi vazt's C, yang sangat terkait dengannya.) Ini tidak ada bedanya untuk golf, tapi saya senang dengan itu. Anda dapat menghasilkan satu juta digit dalam waktu sekitar satu menit di Perl (misalnya jika Anda mengirim ke sed dan wc untuk mendapatkan jumlah digit), di mana solusi lain mungkin memberi Anda beberapa ribu digit.
Penjelasan
Kami menyimpan urutan variabel secara berurutan: Puck's stack (bawah ke atas), nilai Puck's, nilai Ford, Ford's stack (atas ke bawah). Terlepas dari nilai nol di ujungnya (dengan angka nol di sebelah kiri mungkin muncul dari tumpukan kosong), setiap nilai adalah digit yang dihasilkan selanjutnya pada generasi itu, dengan 2 ditambahkan jika generasi berikutnya perlu memiliki anak lagi dari orangtua tersebut. Ketika kita memiliki N nilai bukan nol dalam urutan, kita menghasilkan semua anak hingga dan termasuk generasi ke-N, dalam semacam traversal pohon kedalaman-pertama. Kami mencetak nilai hanya dari generasi ke-N. Ketika generasi ke-N telah sepenuhnya dihasilkan, nilai yang disimpan sebenarnya adalah nilai awal untuk generasi 2 hingga (N + 1), jadi kami menambahkan angka 2 di sebelah kiri dan mulai lagi, kali ini menghasilkan (N + 1 ) generasi ke-5.
Jadi, garis besar: Adegan X: Ketika kita sampai di sini, ini awal dari traversal baru. Keping == 0. Kami secara opsional mendorong nol itu ke tumpukan Puck, dan mengatur Puck = 2. Adegan L: Jika Ford == 0, kami telah mencapai generasi pencetakan. Jika tidak, goto V. Untuk mencetak, jika nilai dalam Puck memiliki 2 tambahan, hapus 2 dan cetak dua kali; jika tidak, cetak sekali. Adegan M: Ini adalah loop di mana kita berulang kali mengaktifkan nilai Puck dan kembali melalui urutan. Kita ulangi sampai kita mencapai akhir (Keping == 0), dalam hal ini goto X, atau kita mencapai nilai yang membutuhkan anak lain (Keping> 2), dalam hal ini kurangi 2 ekstra dan maju ke depan dalam V. Adegan V: Di sini kita maju. Jika Puck 2 atau 4, generasi berikutnya akan mengandung dua anak dari orang tua saat ini, jadi Ford + = 2. Langkah maju melalui urutan. Goto L untuk memeriksa pemutusan hubungan kerja.
sumber
axo , 13 byte
Cobalah online!
Penjelasan
Ini dimulai sebagai port solusi alternatif dalam jawaban Wumpus saya :
Ini menghasilkan 18 byte. Saya akhirnya bermain golf hingga 13 byte yang Anda lihat di atas untuk lebih menyesuaikannya dengan cara kerja axo. Versi 13-byte ini kemudian menginspirasi peningkatan hingga 11 byte di Wumpus, jadi sekarang ini sebenarnya lebih dekat ke versi itu.
Seperti pada Wumpus, dalam iterasi i , bagian bawah tumpukan menampung a (i) -1 dan bagian atas memegang elemen pertama dari run ke- i , tetapi kami bekerja dengan seluruh 0 dan 1 , kecuali untuk mencetak.
sumber
Ruby ,
4539 bytemencetak tanpa batas
Cobalah online!
Cobalah dengan fungsi cetak kelebihan beban yang memungkinkan Anda memilih pemisah dan jumlah elemen yang dicetak
sumber