Tantangan:
Di sini kita memiliki 100 item pertama secara berurutan:
6,5,4,3,2,1,66,65,64,63,62,61,56,55,54,53,52,51,46,45,44,43,42,41,36,35,34,33,32,31,26,25,24,23,22,21,16,15,14,13,12,11,666,665,664,663,662,661,656,655,654,653,652,651,646,645,644,643,642,641,636,635,634,633,632,631,626,625,624,623,622,621,616,615,614,613,612,611,566,565,564,563,562,561,556,555,554,553,552,551,546,545,544,543,542,541,536,535,534,533,...
Bagaimana urutan ini terbentuk? Kami pertama-tama memiliki angka dalam kisaran [6, 1]
(semua nilai yang mungkin dari satu die dari tertinggi ke terendah). Kami kemudian memiliki angka-angka [66..61, 56..51, 46..41, 36..31, 26..21, 16..11]
(semua nilai yang memungkinkan dari dua dadu dari tertinggi ke terendah). Dll.
Ini terkait dengan urutan OEIS A057436: Berisi hanya angka 1 hingga 6 , tetapi dengan semua angka dengan jumlah angka yang sama diurutkan mundur dalam urutan.
Tantangannya adalah memilih salah satu dari tiga opsi ini untuk fungsi / program Anda dengan urutan di atas:
- Ambil input dan output nilai ke- dari urutan ini, yang dapat berupa indeks-0 atau indeks-1.
- Ambil input dan output nilai pertama atau dari urutan ini.
- Keluarkan nilai dari urutan tanpa batas.
Tentu saja, format output apa pun yang wajar dapat digunakan. Bisa berupa string / integer / desimal / dll .; dapat berupa daftar (array) / aliran / etc / (tak terbatas); bisa berupa output dengan spasi / koma / baris baru / pembatas lainnya untuk STDOUT; dll. Silakan sebutkan apa yang saya / O dan opsi yang Anda gunakan dalam jawaban Anda!
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda dengan aturan I / O default , sehingga Anda diizinkan untuk menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda (yaitu TIO ).
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Berikut beberapa kasus uji yang lebih besar jika Anda memilih opsi 1:
n 0-indexed output 1-indexed output
500 5624 5625
750 4526 4531
1000 3432 3433
9329 11111 11112
9330 666666 11111
9331 666665 666666
10000 663632 663633
100000 6131232 6131233
Jawaban:
Jelly , 5 byte
Cobalah online!
Nilai ke-1 diindeks.
sumber
Perl 6 ,
2423 byte-1 byte terima kasih kepada nwellnhof
Cobalah online!
Menghasilkan urutan yang terpisah jauh oleh spasi / baris baru. Atau, untuk beberapa byte lagi kita dapat memiliki daftar malas yang tak terbatas yang dapat kita indeks.
Perl 6 , 27 byte
Cobalah online!
Penjelasan:
sumber
Python 2 ,
393834 byteCobalah online!
Menghasilkan angka 1-diindeks
sumber
R , 43 byte
Cobalah online!
Mencetak urutan tanpa batas
sumber
6 5 4 3 2 166 65 64...
Bash, 31 byte
TIO
pembaruan dari komentar, nilai ke-1 diindeks, + alat GNU + perl, 64 byte, 7 byte disimpan berkat @manatwork
64 byte
sumber
bc<<<obase=6\;$1
. Tapi jika Anda beralih kedc
, tidak ada yang melarikan diri:dc<<<6o$1p
.dc<<<6o$1p|perl -pe '1while s/(.)0/($1-1).6/e;s/0//'|tr 1-6 654321
MATL , 11 byte
Menghasilkan nilai tanpa batas.
Cobalah online!
Penjelasan
sumber
Haskell,
3834 byteDaftar angka yang tak terbatas:
Cobalah online!
Dua solusi sebelumnya yang memberikan daftar string tanpa batas, masing-masing menggunakan 38 byte:
Cobalah online!
Cobalah online!
sumber
replicate
.JavaScript (ES6), 26 byte
Cobalah online!
sumber
Haskell , 28 byte
Cobalah online!
Menghasilkan daftar angka yang tak terbatas
l
. Menggunakan<$>
dan<*>
memotong byte:29 byte
Cobalah online!
Pendekatannya mirip dengan Haskell Output All String menjawab string input tetap "654321", dan melewatkan output string kosong dengan mengubah di mana ia ditempatkan.
30 byte
Cobalah online!
sumber
0
(atau""
), tetapi tidak menemukan cara yang murah untuk tidak memilikinya dalam hasilnya ...05AB1E , 10 byte
Output urutan tanpa batas.
Cobalah online!
Penjelasan
sumber
¸
pada awalnya membuat daftar yang berisi string kosong. Dan 2 byte lebih pendek dari solusi yang saya gunakan untuk menghasilkan kasus uji, jadi tentu saja +1 dari saya. :)Perl 5,
4037 byte-3bytes terima kasih kepada @Xcali
37 byte
40 byte
sumber
Java (JDK) , 48 byte
Cobalah online!
Ini mengembalikan elemen ke -1 yang diindeks .
Rekursi tampaknya mengalahkan lambda iteratif.
Versi berulang, 49 byte
Cobalah online!
sumber
Brachylog ,
1311 byteTerima kasih untuk Fatalize selama 2 byte
Output tanpa batas. Cobalah online!
Penjelasan
sumber
6~d{⟧₁∋}ᵐẉ⊥
. Anda pada dasarnya mengakhiri program Anda dengan "false" yang akan memaksanya untuk mencetak semua solusi.C # (.NET Core) , 38 byte
Cobalah online!
Menghasilkan nilai ke-n (berbasis 1).
sumber
Japt, 14 byte
Pasti ada solusi yang lebih pendek menggunakan metode fungsi dan / atau produk Cartesian tapi (untuk saat ini?) Yang terbaik yang bisa saya kelola adalah port dari solusi JS Arnauld jadi pastikan untuk membesarkannya juga.
Cobalah atau uji persyaratan
0-1000
sumber
Bahasa Wolfram (Mathematica) ,
8878 byteCobalah online!
disimpan 4 + 6 byte berkat @IanMiller
Daftar diindeks 1, menampilkan nomor kesembilan.
sumber
Mathematica, 56 byte
Membutuhkan jumlah memori yang berlebihan untuk benar-benar berjalan karena ia menciptakan semua angka dalam urutan yang memiliki panjang sama dengan atau kurang dari input (yaitu ia menciptakan65(6n−1) istilah) kemudian mengambil nilai yang diperlukan dari daftar. Untuk praktik, gunakan ganti # terakhir kedua dengan nilai spesifik untuk panjangnya Anda ingin menggunakannya.
sumber
Pip
-l
, 16 byteOutput urutan tanpa batas. Cobalah online!
Penjelasan
The
-l
bendera berarti bahwa daftar dicetak dengan setiap item pada baris sendiri; jika suatu item adalah daftar, elemen-elemennya digabungkan tanpa pemisah. Misalnya daftar[1 [2 3] [4 [5 6]]]
akan dicetak sebagaiDengan itu dibersihkan:
Setelah iterasi loop pertama,
x
terlihat seperti[[6;6];[6;5];[6;4];...;[1;1]]
; setelah iterasi kedua,[[[6;6];6];[[6;6];5];[[6;6];4];...;[[1;1];1]]
; dan seterusnya. Kita tidak perlu khawatir tentang meratakan sublists, karena-l
secara efektif melakukannya untuk kita.sumber
Arang , 18 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. 1-diindeks. Penjelasan:
Memasukkan
n
Ulangi sampai
n
nol.Kurangi
-n
modulo6
, lalu tambahkan hasilnya dan output dari kanan ke kiri.Decrement
n
dan integer membaginya dengan6
.sumber
Retina 0.8.2 , 36 byte
Cobalah online! Tautan termasuk kasus uji. 1-diindeks. Penjelasan:
Konversikan ke unary. (Retina 1 akan menghemat 2 byte di sini.)
Konversikan ke basis 6 kata demi kata dengan divmod berulang. Perhatikan bahwa penggunaan
+
berarti bahwa digit yang diekstraksi selalu berupa angka dari 1 hingga 6 bukannya 0 hingga 5 untuk konversi basis 6 biasa. ((_{6})*
lebih cepat tetapi biaya byte mengekstraksi hasil bagi.)Atur ulang digit sehingga 6s menjadi yang pertama dan yang terakhir. (Tidak ada 7 atau 0 tetapi ini memungkinkan saya untuk menggunakan jalan
d
pintas.sumber
Cubix , 22 byte
Ini akan menampilkan urutan tanpa batas. Gagasan umum adalah bahwa ia memiliki nomor dasar yang ditambahkan 6-1. Untuk setiap penambahan hasilnya adalah keluaran dikalikan dengan 10, yang didorong ke bagian bawah tumpukan untuk digunakan kemudian dalam urutan. Basis kemudian muncul dan basis berikutnya dimulai.
Cobalah online!
Tonton Jalankan
sumber
C # (.NET Core) , pencetakan tanpa batas,
181 18088 byte.Sayangnya itu membeku repl.it bukannya menghasilkan dengan benar dalam versi tak terbatas seperti yang ditulis (saya percaya itu menjadi kesalahan di repl.it, karena tidak menghasilkan seperti program loop seperti seharusnya), jadi siapa pun yang berharap untuk menguji perlu sebuah komputer. Jika Anda menambahkan bacaan di bagian depan loop, itu juga berfungsi di repl.it.
Keluaran ke konsol, jelas.
Pada sistem apa pun yang terbatas kode kemungkinan besar pada akhirnya akan crash dengan kesalahan kehabisan memori.Mengolah kode untuk menggunakan lambda @dana.
Cobalah online!
sumber
Keempat (gforth) , 63 byte
Cobalah online!
0-indexed menghasilkan nilai n
Penjelasan
Jika N kurang dari 6, hasilkan nilai absolut N - 6. Jika tidak, dapatkan hasil bagi dan sisa pembagian N dengan 6. Panggil fungsi secara berulang pada hasil bagi, kemudian panggil di sisanya.
Penjelasan Kode
sumber
APL (NARS), 27 karakter, 54 byte
traslate solusinya dengan dana /codegolf//a/179980 di APL ... test:
sumber
C #, cetak dari awal ke n, ??? byte
Kredit ke @dana untuk ekspresi lambda.
Operasi: Jalankan dengan argumen baris perintah 0 sama dengan bilangan bulat yang ingin Anda hitung. (Perlu dicatat bahwa
a[0]
ini adalah referensi ke array args baris perintah yang tidak disebutkan, dan saya tidak tahu bagaimana cara menghitungnya.)sumber