GolfScript, 59 karakter
~:N..*.,2>{:P{(.P\%}do(!},{{N-.*}$0=}:C~[1.{.@+.N<}do]C+++4/
Bu komut dosyası bazı gereksinimleri karşılamıyor:
- Yalnızca girişler için düzgün çalışır
n >= 2, aksi takdirde kilitlenir.
- Çıktı bir tamsayıya kısaltıldı.
- Orta derecede büyük olan her şey için korkunç performans
n
Kodun kısa bir açıklaması:
~:N..*Giriş N'de saklanır ve her ikisini nde kareyi n*nhemen iteriz.
.,2>Diziyi filtreleyerek bir primler listesi oluşturacağız [2..n*n]. Önceki hesaplamamızı n*nn'den büyük bir asal bulmak için (çok kötü!) Bir üst sınır olarak kullanıyoruz.
{:P{(.P\%}do(!},Önceki dizimiz deneme bölümüne göre filtrelendi. Her tamsayı P her tamsayıya karşı test edilir [P-1..1].
{{N-.*}$0=}:C~Önceki diziyi mesafeye göre sıralar ve nilk öğeyi yakalar. Şimdi en yakın prime sahibiz.
[1.{.@+.N<}do]CBiz daha büyük olana kadar Fibonnacis üretiyoruz n. Neyse ki, bu algoritma doğal olarak önceki Fibonnaci'yi takip ediyor, bu yüzden ikisini de bir diziye atıyoruz ve önceki mesafe sıralamamızı kullanıyoruz. Şimdi en yakın Fibonnaci'ye sahibiz.
+++4/Ortalama. GolfScript'in şamandıralar için desteği olmadığını unutmayın, bu nedenle sonuç kesilir.
GolfScript, 81 karakter
İşte tüm gereksinimleri karşılayan bir varyant.
~:N..*2N*,3,|2,^{:P{(.P\%}do(!},{{N-.*}$0=}:C~[0.1{.@+.N<}do]C+++100:E*4/.E/'.'@E%
Uygun davranış sağlamak için n<2, kaçının 2<(dizi küçük olduğunda çöküyor) ve bunun yerine kullanın 3,|2,^. Bu baş adayı dizisi adildir emin olur [2]zaman n < 2. Ben üst sonraki asal gitmekte değişti n*nüzere 2*n( Bertrand'ın önermesiyle ). Ayrıca, 0 bir Fibonnaci sayısı olarak kabul edilir. Sonuç, sonunda sabit nokta matematiğinde hesaplanır. İlginçtir, sonuç her zaman dördüncü sıradadır (0, .25, .5, .75), bu yüzden umarım 2 ondalık kesinlik yeri yeterlidir.
GolfScript kullanmaktaki ilk çatlak, eminim iyileştirme için yer var!