pengantar (dapat diabaikan)
Menempatkan semua angka positif dalam urutan regulernya (1, 2, 3, ...) agak membosankan, bukan? Jadi di sini adalah serangkaian tantangan seputar permutasi (perombakan) dari semua bilangan positif. Ini adalah tantangan kelima dalam seri ini (tautan ke tantangan pertama , kedua , ketiga dan keempat ).
Dalam tantangan ini, kita akan bertemu dengan array Wythoff, yang merupakan longsoran terjalin dari urutan Fibonacci dan urutan Beatty!
The angka Fibonacci mungkin untuk sebagian besar dari Anda urutan terkenal. Diberi dua angka awal dan , berikut diberikan oleh: untuk .
The Beatty urut , mengingat parameter adalah: untuk . Salah satu sifat dari urutan Beatty adalah bahwa untuk setiap parameter , ada tepat satu parameter , sehingga urutan Beatty untuk parameter tersebut dipisahkan dan digabungkan bersama-sama, mereka merentang semua bilangan alami tidak termasuk 0 (mis: ).
Sekarang inilah bagian mindblowing: Anda dapat membuat array, di mana setiap baris adalah urutan Fibonacci dan setiap kolom adalah urutan Beatty. Array ini adalah array Wythoff . Bagian terbaiknya adalah: setiap angka positif muncul tepat sekali dalam array ini! Array terlihat seperti ini:
1 2 3 5 8 13 21 34 55 89 144 ...
4 7 11 18 29 47 76 123 199 322 521 ...
6 10 16 26 42 68 110 178 288 466 754 ...
9 15 24 39 63 102 165 267 432 699 1131 ...
12 20 32 52 84 136 220 356 576 932 1508 ...
14 23 37 60 97 157 254 411 665 1076 1741 ...
17 28 45 73 118 191 309 500 809 1309 2118 ...
19 31 50 81 131 212 343 555 898 1453 2351 ...
22 36 58 94 152 246 398 644 1042 1686 2728 ...
25 41 66 107 173 280 453 733 1186 1919 3105 ...
27 44 71 115 186 301 487 788 1275 2063 3338 ...
...
Elemen pada baris dan kolom didefinisikan sebagai:
dengan adalah rasio emas: .
Jika kita mengikuti anti-diagonal array ini, kita mendapatkan A035513 , yang merupakan urutan target untuk tantangan ini (perhatikan bahwa urutan ini ditambahkan ke OEIS oleh Neil Sloane sendiri!). Karena ini adalah tantangan "urutan murni", tugasnya adalah mengeluarkan untuk diberikan sebagai input, di mana adalah A035513 .
Ada strategi yang berbeda yang dapat Anda ikuti untuk sampai ke , yang membuat tantangan ini (menurut saya) benar-benar menarik.
Tugas
Diberikan input integer , output dalam format integer, di mana adalah A035513 .
Catatan: pengindeksan berbasis 1 diasumsikan di sini; Anda dapat menggunakan pengindeksan berbasis 0, jadi , dll. Sebutkan ini dalam jawaban Anda jika Anda memilih untuk menggunakan ini.
Uji kasus
Input | Output
---------------
1 | 1
5 | 7
20 | 20
50 | 136
78 | 30
123 | 3194
1234 | 8212236486
3000 | 814
9999 | 108240
29890 | 637
Mungkin menyenangkan untuk mengetahui bahwa terbesar untuk adalah
Aturan
- Input dan output adalah bilangan bulat
- Program Anda setidaknya harus mendukung input dalam kisaran 1 hingga 32767). Perhatikan bahwa naik ke 30 digit angka dalam kisaran ini ...
- Input yang tidak valid (0, float, string, nilai negatif, dll.) Dapat mengakibatkan output yang tidak terduga, kesalahan atau (tidak) perilaku yang didefinisikan.
- Standar I / O aturan berlaku.
- Celah default dilarang.
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang
999tidak9999