Tantangan kode ini akan membuat Anda menghitung jumlah cara untuk mencapai mulai dari menggunakan peta bentuk (dengan bilangan bulat non-negatif), dan melakukannya dalam jumlah langkah minimum.
(Catatan, ini terkait dengan urutan OEIS A307092 .)
Contoh
Jadi misalnya, karena diperlukan tiga peta, dan ada dua urutan berbeda dari tiga peta yang akan mengirim hingga :
Menghasilkan atau .
Nilai contoh
f(2) = 1 (via [])
f(3) = 1 (via [0])
f(4) = 1 (via [1])
f(5) = 1 (via [1,0])
f(12) = 2 (via [0,2] or [2,1])
f(13) = 2 (via [0,2,0] or [2,1,0], shown above)
f(19) = 1 (via [4,0])
f(20) = 2 (via [1,2] or [3,1])
f(226) = 3 (via [2,0,2,1,0,1], [3,2,0,0,0,1], or [2,3,0,0,0,0])
f(372) = 4 (via [3,0,1,0,1,1,0,1,1], [1,1,0,2,0,0,0,1,1], [0,2,0,2,0,0,0,0,1], or [2,1,0,2,0,0,0,0,1])
Tantangan
Tantangannya adalah untuk menghasilkan sebuah program yang mengambil bilangan bulat sebagai input, dan mengeluarkan jumlah jalur yang berbeda dari ke melalui sejumlah peta minimal dalam bentuk .
Ini adalah kode-golf , byte paling sedikit menang.
code-golf
sequence
combinatorics
Peter Kagey
sumber
sumber
^
simbol menunjukkan eksponensial. Bisa juga XOR (misalnya C menggunakan^
untuk bitwise XOR).x -> x + x^j
Jawaban:
Jelly , 16 byte
Cobalah online!
Sebuah program lengkap yang mengambil argumennyan dan mengembalikan sejumlah cara untuk mencapai n menggunakan panjang jalur minimal. Tidak efisien untuk yang lebih besar n .
sumber
JavaScript (ES6),
111 ... 8480 byteMengembalikan nilai true daripada1 untuk n = 2 .
Cobalah online!
Berkomentar
sumber
Haskell ,
7875 byteImplementasi ini menggunakan pencarian pertama-napas dalam "pohon" iteratif semua pemetaan yang diperlukan
x -> x + x^j
.Cobalah online!
Penjelasan
sumber
05AB1E , 17 byte
Cobalah online!
sumber
Python 2 , 72 byte
Cobalah online!
sumber
Perl 5 (
-lp
), 79 byteTIO
sumber
CJam (27 byte)
Demo online
Peringatan: ini menjadi sangat intensif memori sangat cepat.
Pembedahan:
Bonus
2
s (untuk menangani input kasus khusus2
, karenawhile
loop lebih mahal daripadado-while
loop) berarti bahwa ukuran daftar tumbuh sangat cepat, dan penggunaan eksponen hinggan-1
berarti bahwa nilai angka yang lebih besar dalam daftar tumbuh sangat cepat.sumber
Haskell , 65 byte
Cobalah online!
Golf- flawr pencarian pertama kali . Saya juga mencoba mundur
n
, tetapi lebih lama:73 byte
Cobalah online!
sumber
R ,
7877 byteCobalah online!
Menggunakan Pencarian Luas Pertama yang disederhanakan
Kode terbuka dengan penjelasan:
Versi lebih pendek dengan alokasi memori yang besar (gagal untuk kasus yang lebih besar):
R ,
7069 byteCobalah online!
-1 byte terima kasih kepada @RobinRyder
sumber
!(a<-sum(x==n))
bisa!{a=sum(x==n)}
untuk -1 byte dalam kedua kasus.Pyth , 24 byte
Cobalah online!
Ini harus menghasilkan output yang benar, tetapi sangat lambat (372 kali tes kasus pada TIO). Aku bisa membuatnya lebih pendek dengan mengganti
.lQ2
denganQ
, tapi ini akan membuat runtime menghebohkan.Catatan: Menghasilkan tidak ada output untuk nomor yang tidak terjangkau( n ≤ 1 )
Penjelasan
sumber