Anda mungkin pernah mendengar angka Fibonacci. Ya tahu, urutan integer yang dimulai dengan 1, 1
, dan kemudian setiap nomor baru adalah jumlah dari dua yang terakhir?
1 1 2 3 5 8 13...
Dan seterusnya. Tantangan tentang angka Fibonacci cukup populer di sini . Tetapi siapa yang mengatakan bahwa angka-angka Fibonacci harus dimulai dengan 1, 1
? Mengapa mereka tidak bisa memulainya 0, 1
? Baiklah, mari kita mendefinisikan kembali mereka mulai dari 0:
0 1 1 2 3 5 8 13...
Tapi ... Kita juga tidak harus berhenti di situ! Jika kita dapat menambahkan dua angka terakhir untuk mendapatkan yang berikutnya, kita juga bisa mengurangi angka pertama dari angka kedua untuk menambahkan angka baru. Jadi itu bisa dimulai dengan 1, 0
:
1 0 1 1 2 3 5 8 13...
Kita bahkan dapat berakhir dengan negatif:
-1 1 0 1 1 2 3 5 8 13...
Dan seri ini juga berlangsung selamanya. Saya pikir itu menarik bagaimana akhirnya agak mencerminkan angka-angka Fibonacci biasa, hanya dengan setiap angka lainnya dibuat negatif:
13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
Sebut seri ini "Nomor Fibonacci Diperpanjang", atau EFN . Karena sebenarnya tidak ada angka negatif yang jelas untuk memulai seri ini, kita akan mengatakan bahwa 0 muncul pada 0 , angka Fibonacci reguler meluas ke indeks positif, dan angka Fibonacci negatif (setengah negatif?) ke indeks negatif, seperti:
Indices: ...-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 ...
Values: ...13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
Ini mengarah ke tantangan hari ini:
Dengan bilangan bulat N , kembalikan setiap indeks tempat N muncul dalam seri EFN .
Beberapa pengamatan acak pada tugas ini:
1 muncul lebih kali dalam EFN dari nomor lain:
[-1, 1, 2]
. Tidak ada nomor akan muncul di lebih dari 3 tempat.Setiap angka Fibonacci> 1 akan muncul sekali (3, 8, 21, dll.) Atau dua kali (2, 5, 13, dll.)
Klarifikasi Peraturan:
- Jika
abs(N)
bukan angka Fibonacci, itu tidak akan pernah muncul di seri EFN , jadi Anda harus mengeluarkan apa-apa / koleksi kosong jika memungkinkan, atau jika itu tidak mungkin dalam bahasa Anda, Anda dapat menampilkan beberapa nilai non-numerik yang konstan. - Jika N muncul di banyak tempat di EFN , output Anda tidak perlu disortir. Meskipun setiap indeks harus muncul tepat satu kali.
- Meskipun sebagian besar tantangan urutan memungkinkan Anda untuk memilih apakah Anda ingin menggunakan pengindeksan berbasis 1 atau 0, tantangan ini harus menggunakan pengindeksan yang dijelaskan (di mana 0 muncul pada 0).
- Anda dapat mengambil I / O melalui format standar apa pun.
Uji Kasus
-13: []
-12: []
-11: []
-10: []
-9: []
-8: [-6]
-7: []
-6: []
-5: []
-4: []
-3: [-4]
-2: []
-1: [-2]
0: 0
1: [-1, 1, 2]
2: [-3, 3]
3: [4]
4: []
5: [-5, 5]
6: []
7: []
8: [6]
9: []
10: []
11: []
12: []
13: [-7, 7]
Dan beberapa test case yang lebih besar:
89: [-11, 11]
1836311903: [46]
10000: []
-39088169: [-38]
Seperti biasa, jawaban terpendek dalam byte menang!