EDIT: Saya akan menerima jawaban Senin, 15/2/2016. Semoga byte selalu menguntungkan Anda!
Dalam tantangan "Print the N-Bonacci Sequence" , @DJMcGoathem menjelaskan urutan N-bonacci, di mana angka-angka N sebelumnya dijumlahkan, alih-alih angka 2 tradisional dari urutan Fibonacci (dikatakan sebagai " urutan duo nacci"). Dia kemudian diminta mengambil dua input, X dan N, lalu mengeluarkan X th N nomor -nacci.
Saya mengusulkan yang sebaliknya.
Diberikan urutan, output yang N urutan -nacci itu adalah bagian dari. Saya mengatakan "bagian dari" karena:
- A) urutan ini tidak terbatas
- B) jika diberi awal urutan, Anda bisa menghitung jumlah 1s terkemuka
Dalam hal itu bisa menjadi milik beberapa urutan N -nacci, pilih yang terendah.
Dalam hal itu bukan milik urutan N-nacci , maka program Anda dapat melakukan apa pun selain mencetak sesuatu yang bisa keliru untuk output. Perilaku ini termasuk (tetapi tidak terbatas pada): infinite loop, error, crash, hapus sendiri (* cough cough * vigil * cough cough *), atau membuat lubang hitam (selama lubang hitam ini tidak menghasilkan apa pun yang bisa keliru untuk output yang valid).
Demi tantangan ini, urutan ini mulai dengan 1. Ini cara apapun N urut -nacci dimulai dengan N yang. Selanjutnya, N harus bilangan bulat positif. Jadi tidak -1-nacci, dll.
Kasus uji:
1,1,1 -> 1
49, 97 -> 7
55, 89, 144 -> 2
1 -> 1
6765 -> 2
12, 23, 45, 89 -> 12
100, 199 -> 100
create a black hole (as long as this black hole does not produce anything that could be mistaken for valid output).
Ya ampun, spiral lubang hitam bertemu dengan rasio emas! Itu harus output yang valid untuk urutan duoacci!Jawaban:
Ruby, 94
Saya cukup terkejut seberapa jauh saya bisa bermain golf ini dalam algoritma yang sama! Saya mulai dengan lebih dari 200!
Tidak Disatukan:
sumber
x=[1]*(s+z=a.size)
kerjanya?n == 1
, maka kita tidak akan pernah naik, jadi kita perlu array 1 berapa lama inputnya. Jikan > 1
, maka kita membutuhkan setidaknyan
1 untuk urutannya. Jadis+a.size
mencakupn == 1
untuk setiap panjanga
, dan itu mencakup awal dari urutan lain sehingga kita bisa mulai menambahkans
angka dari batt. Apakah itu masuk akal?[1]*number
berikan array 1 dengan panjangnumber
. Jadix=[1]*(s+z=a.size)
tetapkana.size
kez
, lalu tetapkan kex
array dengan panjang 1'ss+z
.Python 2, 176 byte
Perhatikan bahwa ini membutuhkan input dalam format ini:
daripada
Solusi yang cukup mudah, hanya untuk membuat segalanya bergulir. Saya akan bekerja lebih banyak untuk bermain golf setelah orang lain menjawab. Ini menggunakan versi generator N-Bonnaci yang sedikit dimodifikasi dari jawaban @ Data , jadi bantu dia. Kemudian untuk setiap N-Bonnaci dalam kisaran input, periksa apakah input tersebut merupakan urutan selanjutnya.
sumber
f.append
untukf+=
;
perlu?Lua,
324323 BytesKetika saya melihat kiriman lainnya, saya merasa ada yang salah dengan kode saya ... Tapi kemudian, saya ingat itu Lua, dan tidak ada semua fungsi mewah ini: '(
Itu sangat menyenangkan, butuh waktu sebenarnya.
Sunting: Disimpan 1 byte dengan trik sederhana: menggunakan
::label::
+goto label
sebagai ganti infinite loop dilakukan denganwhile''
.Tidak Disatukan dan Penjelasan
Lua tidak memiliki cara untuk mendefinisikan set, subset, atau bahkan memeriksa apakah array / tabel berisi nilai tanpa menggunakan indeks / kunci. Itu sebabnya saya memutuskan untuk menghapus elemen dari array yang saya ambil sebagai parameter. begitulah cara saya mencatat elemen mana yang telah dihitung, dan jika cocok.
Anda dapat mencoba Lua online , dan Anda dapat menyalin / menempelkan contoh kode berikut untuk menjalankan beberapa tes. Ketika fungsi ini keluar ketika menemukan jawaban (infinite loop sebaliknya), Anda harus mengubah indeks yang
test[]
digunakan (jangan lupa lua adalah 1-diindeks :)).sumber