(inspirado por la respuesta de Helka a mi combinación aleatoria de etiquetas "ajedrez" y "Fibonacci" en el chat)
Fibonacci
Los números de Fibonacci son una de las secuencias más conocidas en matemáticas, donde cada número se compone sumando los dos números anteriores. A continuación se muestra una definición de la secuencia de índice cero:
f(0) = 0
f(1) = 1
f(n) = f(n-1) + f(n-2)
Esto da como resultado la secuencia 0, 1, 1, 2, 3, 5, 8, 13, 21, ...
( enlace OEIS ). En este desafío, nos centraremos solo en los valores estrictamente positivos (así 1, 1, 2, 3, ...
), y puede elegir indexación cero o indexación única, pero indique cuál en su envío.
Los números de Fibonacci se pueden usar para un mosaico del plano, mediante el uso de cuadrados f(n)
de tamaño sucesivo y alineando sus bordes. El mosaico se realiza en sentido antihorario, colocando cuadrados en el patrón "derecha-arriba-izquierda-abajo" desde el cuadrado actual. Un ejemplo de este mosaico parcial para f(8)=21
, con el cuadrado inicial resaltado en azul, es el siguiente:
Se puede ver el f(1)=1
que la casilla de salida (resaltado en azul), el f(2)=1
cuadrado situado a la derecha de la misma, el f(3)=2
cuadrado colocado arriba a partir de ahí, el f(4)=3
cuadrado colocado izquierda y así sucesivamente. El siguiente cuadrado sería f(9)=21+13=34
y se colocaría en la parte inferior. Este es el método de mosaico parcial que usaremos en este desafío.
Las reinas
En el juego de ajedrez , la pieza más poderosa es la reina porque puede mover cualquier cantidad de espacios horizontal, vertical o diagonal. En el siguiente diagrama del tablero, los cuadrados con un círculo negro muestran dónde puede moverse la reina:
Definiremos el término cobertura como
El porcentaje de casillas a las que la reina puede moverse frente al número total de casillas, dada la posición particular de la reina en un tablero vacío, e incluyendo la posición inicial de la propia reina.
Para el ejemplo anterior, la cobertura de la reina es 28/64 = 43.75%
. Si la reina estuviera en el h8
cuadrado superior derecho , la cobertura sería 22/64 = 34.375%
. Si la reina estuviera adentro e7
, la cobertura sería 24/64 = 37.5%
.
El reto
Vamos a utilizar el mosaico de Fibonacci demostrado anteriormente como nuestro tablero de ajedrez para este desafío. Se le darán dos enteros positivos como entrada n
y x
:
- El
n
representa qué tan grande es el mosaico. El ejemplo de mosaico anterior, con el21
cuadrado a la izquierda, es un tablero de tamañon = 8
desdef(8) = 21
(cuando está indexado a cero). - El
x
representa cuál de los cuadrados de Fibonacci se utiliza para la colocación de la reina (s), para el cálculo de la cobertura. Las reinas se colocan una a la vez en cada cuadro en ese mosaico cuadrado de Fibonacci en particular, y la cobertura total es la suma de la cobertura individual (única).
Por ejemplo, aquí hay una imagen de n = 8
(el mismo mosaico que el anterior) y x = 4
(correspondiente al f(4) = 3
cuadrado, sombreado en azul). Al colocar una reina una a la vez en cada uno de esos nueve cuadrados azules, las reinas pueden (combinar) cubrir cada cuadrado que está sombreado en naranja. La cobertura total en este ejemplo es por lo tanto 309/714 = 43.28%
.
Obviamente, en cualquier momento n = x
, la cobertura será 100%
(por ejemplo, con n=8
y x=8
, puede ver que cada cuadro en todo el tablero estará cubierto al menos una vez). A la inversa, con un adecuadamente grande n
y x=1
o x=2
, la cobertura va a acercarse (pero nunca llegar a) 0%
(por ejemplo, con n=8
y x=1
, la cobertura es un insignificante 88/714 = 12.32%
).
Dados dos de estos números de entrada, debe generar el porcentaje de cobertura, con una precisión de dos decimales. Especifique cómo maneja su código el redondeo.
Reglas
- La entrada y la salida se pueden dar en cualquier formato conveniente , pero deben tener una precisión de dos decimales. Especifique cómo maneja su código el redondeo.
- Suponga que no hay otras piezas en el tablero o que interfieran con los movimientos.
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Si es posible, incluya un enlace a un entorno de prueba en línea para que otras personas puedan probar su código.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
Ejemplos
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