(inspiré par la réponse d' Helka à mon appariement aléatoire de balises "échecs" et "Fibonacci" dans le chat)
Fibonacci
Les nombres de Fibonacci sont l'une des séquences les plus connues en mathématiques, où chaque nombre est composé en additionnant les deux nombres précédents ensemble. Voici une définition de la séquence indexée zéro:
f(0) = 0
f(1) = 1
f(n) = f(n-1) + f(n-2)
Il en résulte la séquence 0, 1, 1, 2, 3, 5, 8, 13, 21, ...
( lien OEIS ). Dans ce défi, nous nous concentrerons uniquement sur les valeurs strictement positives (donc 1, 1, 2, 3, ...
), et vous pouvez choisir l'indexation zéro ou l'indexation unique, mais veuillez indiquer laquelle dans votre soumission.
Les nombres de Fibonacci peuvent être utilisés pour un pavage de l'avion, en utilisant des carrés f(n)
de tailles successives et en alignant leurs bords ensemble. Le pavage se fait dans le sens inverse des aiguilles d'une montre, en plaçant des carrés dans le motif "droite-haut-gauche-bas" du carré actuel. Un exemple de ce pavage partiel pour f(8)=21
, avec le carré de départ surligné en bleu, est le suivant:
Vous pouvez voir le f(1)=1
comme le carré de départ (surligné en bleu), le f(2)=1
carré placé à droite de celui-ci, le f(3)=2
carré placé à partir de là, le f(4)=3
carré placé à gauche et ainsi de suite. Le carré suivant serait f(9)=21+13=34
et serait placé en bas. Il s'agit de la méthode de mosaïque partielle que nous utiliserons dans ce défi.
Les reines
Dans le jeu d' échecs , la pièce la plus puissante est la reine car elle peut déplacer n'importe quel nombre d'espaces horizontalement, verticalement ou en diagonale. Dans le diagramme ci-dessous, les carrés avec un cercle noir indiquent où la reine peut se déplacer:
Nous définirons le terme couverture comme
Pourcentage de cases vers lesquelles la reine peut se déplacer par rapport au nombre total de cases, compte tenu de la position particulière de la reine sur un plateau vide, et en incluant la position de départ de la reine.
Pour l'exemple se déplace ci-dessus, la couverture de la reine est 28/64 = 43.75%
. Si la reine était dans le h8
carré supérieur droit , la couverture serait 22/64 = 34.375%
. Si la reine était présente e7
, la couverture le serait 24/64 = 37.5%
.
Le défi
Nous allons utiliser le carrelage Fibonacci présenté ci-dessus comme échiquier pour ce défi. Vous recevrez deux entiers positifs en entrée n
et x
:
- Le
n
représente la taille du carrelage. L'exemple de pavage ci-dessus, avec le21
carré à gauche, est un tableau de taillen = 8
depuisf(8) = 21
(lorsqu'il est indexé zéro). - Le
x
représente lequel des carrés de Fibonacci est utilisé pour le placement de reine (s), pour le calcul de la couverture. Les reines sont placées une par une sur chaque case de cette tuile carrée Fibonacci particulière, et la couverture totale est la somme de la couverture individuelle (unique).
Par exemple, voici une image de n = 8
(le même pavage que ci-dessus) et x = 4
(correspondant au f(4) = 3
carré, bleu ombré). En plaçant une reine une par une dans chacun de ces neuf carrés bleus, les reines peuvent (combinées) couvrir chaque carré ombré d'orange. La couverture totale dans cet exemple est donc 309/714 = 43.28%
.
De toute évidence, à tout moment n = x
, la couverture sera 100%
(par exemple, avec n=8
et x=8
, vous pouvez voir que chaque carré de l'ensemble du plateau sera couvert au moins une fois). Inversement, avec un n
et x=1
ou suffisamment grand x=2
, la couverture va s'approcher (mais jamais atteindre) 0%
(par exemple, avec n=8
et x=1
, la couverture est dérisoire 88/714 = 12.32%
).
Étant donné deux de ces nombres d'entrée, vous devez générer le pourcentage de couverture, précis à deux décimales près. Veuillez spécifier comment votre code gère l'arrondi.
Règles
- L'entrée et la sortie peuvent être données dans n'importe quel format pratique , mais doivent être précises à deux décimales près. Veuillez spécifier comment votre code gère l'arrondi.
- Supposons qu'aucune autre pièce ne se trouve sur le plateau ou n'interfère autrement avec les mouvements.
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- Si possible, veuillez inclure un lien vers un environnement de test en ligne afin que d'autres personnes puissent essayer votre code!
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
Exemples
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