Un numero intero positivo n può essere rappresentato come un rettangolo con lati interi a , b tale che n = a * b . Cioè, l'area rappresenta il numero. In generale, un e b non sono unici per un dato n .
Come è noto, un rettangolo è particolarmente piacevole per l'occhio (o è il cervello?) Quando i suoi lati sono nel rapporto aureo , φ = (sqrt (5) +1) / 2 ≈ 1.6180339887 ...
Combinando questi due fatti, lo scopo di questa sfida è di scomporre un numero intero n nel prodotto di due numeri interi a , b il cui rapporto è il più vicino possibile a φ (con la consueta metrica su ℝ). Il fatto che φ sia irrazionale implica che esiste una coppia unica di soluzione ( a , b ).
La sfida
Dato un numero intero positivo n , produce numeri interi positivi a , b tali che a * b = n e la differenza assoluta tra a / b e φ è ridotta al minimo.
Ad esempio, considera n = 12. Le coppie ( a , b ) che soddisfano a * b = n sono: (1, 12), (2,6), (3,4), (4,3), ( 6,2), (12,1). La coppia il cui rapporto è più vicino a φ è (4,3), che dà 4/3 = 1.333.
Regole
Funzioni o programmi sono accettabili.
Il numeratore ( a ) dovrebbe apparire per primo nell'output e il denominatore ( b ) secondo . Oltre a ciò, i formati di input e output sono flessibili come al solito. Ad esempio, i due numeri possono essere emessi come stringhe con qualsiasi separatore ragionevole o come un array.
Il codice dovrebbe funzionare in teoria per numeri arbitrariamente grandi. In pratica, potrebbe essere limitato da restrizioni relative alla memoria o al tipo di dati.
È sufficiente considerare una versione approssimativa di φ , purché sia accurata fino al terzo decimale o migliore. Cioè, la differenza assoluta tra il vero φ e il valore approssimativo non dovrebbe superare 0.0005. Ad esempio, 1.618 è accettabile.
Quando si utilizza una versione approssimativa e razionale di φ c'è una piccola possibilità che la soluzione non sia unica. In tal caso è possibile generare qualsiasi coppia a , b che soddisfi il criterio di minimizzazione.
Il codice più corto vince.
Casi test
1 -> 1 1
2 -> 2 1
4 -> 2 2
12 -> 4 3
42 -> 7 6
576 -> 32 18
1234 -> 2 617
10000 -> 125 80
199999 -> 1 199999
9699690 -> 3990 2431
|a/b-b/a-1|
è promettente, anche se una prova sarebbe in ordine
a/b
. La rimozione del quadrato dell'unità lascia il piccolo rettangolo a destra che rappresenta b/a
. Un rettangolo dorato quindi raggiunge una differenza di 1.