Pertimbangkan urutan berdasarkan hubungan perulangan f(n) = f(n-1)+f(n-2)
,, dimulai dengan f(1) = x1, f(2) = x2
. Sebab x1 = 2, x2 = 1
, urutannya dimulai seperti ini:
2 1 3 4 7 11 18 29 47 76 123 199 322 521 843
Menggabungkan ini menjadi string akan memberikan:
213471118294776123199322521843
Sekarang, bagilah daftar ini ke dalam angka terkecil yang memungkinkan y(n) > y(n-1)
. Mulai dengan angka pertama, lalu yang kedua dll. Nomor output pertama harus selalu satu digit. Pad nomor terakhir dengan jumlah nol yang diperlukan.
2 13 47 111 829 4776 12319 93225 218430
Anda akan mendapatkan dua angka, (x1, x2)
sebagai input, pada format apa pun yang nyaman, dan tantangannya adalah mengeluarkan daftar yang diurutkan.
Aturan:
- Fungsi dan programnya OK
- Urutan awal harus memiliki tepat 15 angka (Angka terakhir adalah
f(15)
). x1
danx2
tidak negatif (nol adalah mungkin).- Outputnya bisa dalam format apa pun yang nyaman
- Vektor keluaran
y
harus dibuat sedemikian rupay2 > y1
.- Pertama yang terkecil mungkin
y1
, lalu yang terkecil mungkiny2
, laluy3
dan seterusnya.
- Pertama yang terkecil mungkin
- Jika
x1 = x2 = 0
kemudian output 15 nol (pada format yang sama dengan output lainnya, yaitu tidak000000000000000
).
Contoh :
Input: 1 1
Output: 1 12 35 81 321 345 589 1442 3337 7610
Input: 3 2
Output: 3 25 71 219 315 0811 3121 23435 55898 145300
|
Optional leading zero
Input: 0 0
Output: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Kode terpendek dalam byte menang. Harap sertakan tautan ke juru bahasa online jika memungkinkan.
code-golf
math
arithmetic
Stewie Griffin
sumber
sumber
5467
?54 67
?5 46 70
?Jawaban:
Pyth, 56 byte
Suite uji
Penjelasan:
Pertama, kami memeriksa apakah inputnya tepat
0, 0
. Jika demikian, cetak 15 nol.Kalau tidak, kami menghasilkan urutan, dengan
jkhM.u,eNsN14Q
. Ini mirip dengan algoritma Pyth standar untuk urutan Fibonacci.Selanjutnya, kami mengurangi lebih dari string ini. Akumulator adalah daftar string, yang mewakili setiap angka dalam urutan yang dibagi. Pada setiap langkah reduksi, kita mengambil karakter berikutnya, dan memeriksa apakah akumulator dalam urutan, menggunakan fungsi helper
y
, didefinisikan denganLsgM.:sMb2
, yang benar jika inputnya rusak. Jika sesuai, kami menambahkan karakter berikutnya ke daftar sebagai nomornya sendiri. Jika tidak, kami menambahkan karakter berikutnya ke akhir string terakhir. Ini dipenuhi denganu?yGX_1GHaGH ... Y
.Selanjutnya, kami melakukan loop sementara fungsional. Pengulangan berlanjut hingga daftar berjalan, menggunakan kembali fungsi pembantu. Pada setiap langkah, a
0
ditambahkan ke akhir string terakhir dalam daftar. Ini dipenuhi dengan.WyHX_1Z`0
.Akhirnya, string dikonversi menjadi bilangan bulat, dengan
sM
, dan dicetak.Pyth, 51 byte
Saya percaya ini berhasil, tetapi terlalu lambat untuk menguji - ini adalah solusi brute force untuk membagi string.
Saya akan membuat beberapa perbaikan pada
X
fungsi, tetapi kode di atas berfungsi dalam versi Pyth yang paling baru ketika pertanyaan diposting.sumber
JavaScript ES6, 127
135Uji
sumber
JavaScript ES6,
187180187184182179175172165160155154 byteSaya mendapatkan hasil yang sama ketika menjalankannya untuk
1,1
dan3,2
menguji kasus.0,0
telah mengambil kelebihan 26 byte ...De-golf + dikonversi ke ES5 + demo:
sumber
n <= 15
.f(n) = f(n-1)+f(n-2)
memiliki nilai maksimum tepat 15. Jumlah nilai output ditentukan berdasarkan algoritma, tidak ada yang lain.f(1)=x1
danf(2)=x2
bisa lebih tinggi dari 15. Jumlah nilai output ditentukan berdasarkan nilai input. Untuk3 2
itu akan 10.JavaScript (ES6), 162 byte
Penjelasan
Uji
Tampilkan cuplikan kode
sumber
Mathematica, 192 byte
Kasus uji:
Panjang nama fungsi membunuhku.
sumber
Haskell,
165159152142141 byteContoh penggunaan:
3 % 2
->[3,25,71,219,315,811,3121,23435,55898,145300]
.Demo online (dengan
main
pembungkus).Bagaimana itu bekerja:
sumber
PowerShell,
167166 byteMenyimpan byte dengan menghilangkan
$s
variabel dan langsung memberi makan loop output.Tidak dikumpulkan dan berkomentar:
sumber
Perl 6 , 107 byte
Pemakaian:
Penjelasan
menciptakan urutan seperti Fibonacci, dimulai dengan argumen (
@_
) tergelincir (|
) dimengambil 15 elemen pertama dari urutan itu
menggabungkannya menjadi string tunggal (
.join
), membaginya menjadi urutan karakter individu (.comb
) dan menyimpannya dalam skalar "default" ($_
) setelah memaksa urutan tersebut ke dalam array yang dapat diubah, dengan terlebih dahulu menyimpannya dalam array anonim (@
)ia menemukan jumlah nilai dalam skalar default, dan jika itu nol mengembalikan skalar default, yang akan berisi array 15 nol
jika jumlahnya bukan nol, itu membuat daftar dengan terlebih dahulu menggeser elemen pertama dalam skalar default
diikuti dengan menghasilkan sisa nilai, mengeceknya dengan nilai sebelumnya (
$^b
)jika skalar default kehabisan nilai, gunakan 0 sebagai gantinya (
//0
)berhenti ketika tidak ada elemen yang tersisa di skalar default
sumber
until (my$a...
? Apakah(
tidak pembatas khusus?until
, yang tidak ada.