(ispirato dalla risposta di Helka al mio abbinamento casuale di tag "scacchi" e "Fibonacci" in chat)
Fibonacci
I numeri di Fibonacci sono una delle sequenze più note in matematica, dove ogni numero è composto sommando i due numeri precedenti. Di seguito è una definizione della sequenza indicizzata zero:
f(0) = 0
f(1) = 1
f(n) = f(n-1) + f(n-2)
Ciò risulta nella sequenza 0, 1, 1, 2, 3, 5, 8, 13, 21, ...
( collegamento OEIS ). In questa sfida, ci concentreremo solo sui valori strettamente positivi (quindi 1, 1, 2, 3, ...
) e puoi scegliere l'indicizzazione zero o l'indicizzazione uno, ma ti preghiamo di indicare quale nel tuo invio.
I numeri di Fibonacci possono essere usati per una piastrellatura del piano, usando quadrati f(n)
di dimensioni successive e allineando i loro bordi. La piastrellatura viene eseguita in senso antiorario, posizionando i quadrati nello schema "destra-su-sinistra-giù" dal quadrato corrente. Un esempio di questa piastrellatura parziale per f(8)=21
, con il quadrato iniziale evidenziato in blu, è il seguente:
Si può vedere il f(1)=1
come la casella di partenza (evidenziato in blu), la f(2)=1
piazza posta alla destra di esso, il f(3)=2
quadrato posto in su da lì, il f(4)=3
quadrato che si trova a sinistra , e così via. La prossima piazza sarebbe f(9)=21+13=34
e sarebbe posizionata in basso. Questo è il metodo di piastrellatura parziale che useremo in questa sfida.
Le regine
Nel gioco degli scacchi , il pezzo più potente è la regina perché può muovere qualsiasi numero di spazi in orizzontale, verticale o diagonale. Nel diagramma in basso, i quadrati con un cerchio nero mostrano dove la regina può muoversi:
Definiremo il termine copertura come
La percentuale di quadrati in cui la regina può spostarsi rispetto al numero totale di quadrati, data la particolare posizione della regina su una tavola vuota e inclusa la posizione iniziale della regina.
Per l'esempio precedente, la copertura della regina è 28/64 = 43.75%
. Se la regina fosse nella h8
piazza in alto a destra , la copertura sarebbe 22/64 = 34.375%
. Se la regina fosse presente e7
, la copertura sarebbe stata 24/64 = 37.5%
.
La sfida
Utilizzeremo la piastrellatura di Fibonacci dimostrata sopra come nostra scacchiera per questa sfida. Ti verranno dati due numeri interi positivi come input n
e x
:
- Il
n
rappresenta quanto è grande la piastrellatura. La piastrellatura di esempio sopra, con il21
quadrato a sinistra, è una tavola di dimensioni dan = 8
alloraf(8) = 21
(quando indicizzata con zero). - La
x
rappresenta, che delle piazze di Fibonacci viene utilizzato per il posizionamento della regina (s), per il calcolo della copertura. Le regine sono posizionate una alla volta su ogni quadrato in quella particolare tessera quadrata di Fibonacci, e la copertura totale è la somma della copertura individuale (unica).
Ad esempio, ecco un'immagine di n = 8
(la stessa piastrellatura di cui sopra) e x = 4
(corrispondente al f(4) = 3
quadrato, blu sfumato). Posizionando una regina alla volta in ciascuno di quei nove quadrati blu, le regine possono (combinare) coprire ogni quadrato che è ombreggiato in arancione. La copertura totale in questo esempio è quindi 309/714 = 43.28%
.
Ovviamente, ogni volta che n = x
la copertura sarà 100%
(ad esempio, con n=8
e x=8
, puoi vedere che ogni quadrato dell'intero tabellone sarà coperto almeno una volta). Al contrario, con una copertura sufficientemente ampia n
e x=1
o x=2
, la copertura si avvicinerà (ma non raggiungerà mai) 0%
(ad esempio, con n=8
e x=1
, la copertura è irrisoria 88/714 = 12.32%
).
Dati due di tali numeri di input, è necessario generare la percentuale di copertura, accurata con due decimali. Specifica come il tuo codice gestisce l'arrotondamento.
Regole
- L'input e l'output possono essere forniti in qualsiasi formato conveniente , ma devono essere precisi al secondo decimale. Specifica come il tuo codice gestisce l'arrotondamento.
- Supponiamo che non ci siano altri pezzi sul tabellone o che interferiscano in altro modo con le mosse.
- È accettabile un programma completo o una funzione. Se una funzione, è possibile restituire l'output anziché stamparlo.
- Se possibile, includi un collegamento a un ambiente di test online in modo che altre persone possano provare il tuo codice!
- Sono vietate le scappatoie standard .
- Si tratta di code-golf quindi si applicano tutte le normali regole del golf e vince il codice più breve (in byte).
Esempi
n = 8, x = 4
43.28
n = 8, x = 8
100 or 100.00
n = 8, x = 1
12.32
n = 4, x = 1
66.67
n = 4, x = 2
60 or 60.00
n = 5, x = 3
75 or 75.00
n = 5, x = 1
47.5 or 47.50