Muhtemelen Fibonacci numaralarını duymuşsunuzdur. Ya, bu tamsayı dizisi ile başlayan 1, 1
ve sonra her yeni sayı son ikisinin toplamı?
1 1 2 3 5 8 13...
Ve bunun gibi. Fibonacci sayılarıyla ilgili zorluklar burada oldukça popülerdir . Ama kim Fibonacci sayıları ile başlamak zorunda olduğunu söylüyor 1, 1
? Neden başlayamadılar 0, 1
? Pekala, onları 0'dan başlayacak şekilde yeniden tanımlayalım:
0 1 1 2 3 5 8 13...
Ama ... Orada da durmak zorunda değiliz! Sonrakini almak için son iki sayıyı ekleyebilirsek, yeni bir sayı hazırlamak için ilk sayıyı ikinci sayıdan da çıkarabiliriz. Böylece şöyle başlayabilir 1, 0
:
1 0 1 1 2 3 5 8 13...
Negatiflerle bile sonuçlanabiliriz:
-1 1 0 1 1 2 3 5 8 13...
Ve bu dizi de sonsuza dek sürüyor. Sanırım normal Fibonacci sayılarını yansıtmanın nasıl bir sonuç verdiğini ilginç buluyorum.
13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
Bu seriye "Genişletilmiş Fibonacci Numarası" veya EFN diyelim . Şu seriye başlamak için bariz bir negatif sayı gerçekten olmadığı için, bunu söylerim 0 gösterileri kadar 0 , düzenli Fibonacci sayıları pozitif endekslerin giriş uzatmak ve negatif (yarım-negatif?) Fibonacci sayıları uzatmak negatif endekslere, şöyle:
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...
Bu, bugünün zorluğuna yol açar:
Tamsayı N verildiğinde , N'nin EFN serisinde göründüğü her dizini döndürün .
Bu görevle ilgili rastgele bazı gözlemler:
1 daha kez görünen EFN başka sayısından daha:
[-1, 1, 2]
. 3'ten fazla yerde hiçbir sayı görünmez.Her Fibonacci sayısı> 1, bir kez (3, 8, 21 vb.) Veya iki kez (2, 5, 13, vb.) Görünecektir.
Kural Açıklamaları:
- Eğer
abs(N)
bir Fibonacci sayı değil, görünmesini asla EFN çıkış şey / boş bir koleksiyon mümkünse gerekir böylece, serinin veya o sizin dilinizde mümkün değilse, çıktısını alabilirsiniz bazı sabit olmayan sayısal değer. - Eğer N birden fazla yerde görünür EFN , çıktı sıralanabilir gerekmez. Her indeks tam olarak bir kez görünmek zorunda olsa da.
- En rağmen dizi zorlukları size kullanmak isteyip istemediğinizi seçmek için izin 1 tabanlı veya indeksleme 0 tabanlı, bu meydan okuma gerekir indeksleme kullanmak açıklanan (burada 0'dan 0 görünür).
- Herhangi bir standart formatta G / Ç alabilirsiniz.
Test Kılıfları
-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]
Ve bazı daha büyük test durumları:
89: [-11, 11]
1836311903: [46]
10000: []
-39088169: [-38]
Her zamanki gibi, bayt cinsinden en kısa cevap kazanır!