GolfScript, 59 caratteri
~:N..*.,2>{:P{(.P\%}do(!},{{N-.*}$0=}:C~[1.{.@+.N<}do]C+++4/
Questo script non soddisfa alcuni dei requisiti:
- Funziona correttamente solo per gli input
n >= 2, altrimenti si blocca.
- L'output viene troncato a un numero intero.
- Prestazioni terribili per qualsiasi moderatamente grande
n
Una breve procedura dettagliata del codice:
~:N..*L'ingresso è memorizzato in N e spingiamo subito entrambi ne il quadrato n*n.
.,2>Genereremo un elenco di numeri primi filtrando l'array [2..n*n]. Usiamo il nostro precedente calcolo di n*ncome (molto male!) Limite superiore per trovare un numero primo maggiore di n.
{:P{(.P\%}do(!},Il nostro array precedente è filtrato per divisione di prova. Ogni numero intero P viene testato rispetto a ogni numero intero [P-1..1].
{{N-.*}$0=}:C~Ordina la matrice precedente in base alla distanza ne prende il primo elemento. Ora abbiamo il numero primo più vicino.
[1.{.@+.N<}do]CGeneriamo Fibonnacis fino a quando non ne otteniamo uno maggiore n. Fortunatamente, questo algoritmo tiene naturalmente traccia dei precedenti Fibonnaci, quindi li gettiamo entrambi in un array e usiamo il nostro precedente ordinamento a distanza. Ora abbiamo il Fibonnaci più vicino.
+++4/Media. Nota che GolfScript non supporta i float, quindi il risultato viene troncato.
GolfScript, 81 caratteri
Ecco una variante che soddisfa tutti i requisiti.
~:N..*2N*,3,|2,^{:P{(.P\%}do(!},{{N-.*}$0=}:C~[0.1{.@+.N<}do]C+++100:E*4/.E/'.'@E%
Per garantire un comportamento corretto per n<2, evito 2<(si arresta in modo anomalo quando l'array è piccolo) e invece lo uso 3,|2,^. Questo si assicura che l'array candidato principale sia proprio [2]quando n < 2. Ho cambiato il limite superiore per il prossimo primo da n*na 2*n( postulato di Bertrand ). Inoltre, 0 è considerato un numero di Fibonnaci. Il risultato viene calcolato in matematica a virgola fissa alla fine. È interessante notare che il risultato è sempre in quarta (0, 0,25, 0,5, 75), quindi spero che siano sufficienti 2 decimali di precisione.
Il mio primo crack nell'uso di GolfScript, sono sicuro che ci sia spazio per miglioramenti!