Défi python, j ene trouves pas mon erreur
Résolu
Captainbleu
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Captainbleu Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Captainbleu Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'apprends par la pratique de python notamment à l'aide de défi, mais là je sais grâce à des manipulations que mon erreur est au while mais je ne vois pas en quoi :
Si Nicolas Flamel est célèbre pour sa pierre philosophale, Léonard de Pise, de 200 ans son aîné, a aussi laissé sa trace chez les sorciers, en créant le vif d'or. Bien que les mouvements du vif d'or semblent erratiques, celui-ci a en fait pour fonction de joindre des points de l'espace dans un ordre préétabli.
Précisément, la position du vif d'or est définie par trois coordonnées : abscisse, ordonnée et hauteur. À partir de sa position (x, y, z), le vif va alors se déplacer en ligne droite vers sa position suivante donnée par : (y, z, (x + y + z) % n). Pour rappel, l'opération % donne le reste de la division entière, et n est ici une valeur positive, supérieure à 1, fixée à l'avance.
Le vif d'or entame toujours sa course en (0, 0, 1). Supposons que n soit égal à 85, alors le vif d'or joindra successivement les positions suivantes :
Au bout d'un certain temps, le vif d'or reviendra à sa position d'origine et suivra donc à nouveau exactement le même parcours. Dans l'exemple précédent, cela se produit à la position 2977 :
En choisissant la valeur de n, on fait donc varier la trajectoire du vif d'or, ainsi que le temps qu'il met avant de revenir à sa position d'origine.
Léonard de Pise a calculé les 10 meilleures valeurs de n et les a entrées dans tous les vifs d'or. Il s'agit des valeurs de n inférieures ou égales à 200, qui donnent les parcours les plus longs (c'est-à-dire pour lesquels le vif d'or effectue le plus de mouvements avant de repasser par sa position initiale).
Afin d'essayer de prévoir les déplacements du vif d'or lors du prochain match de Quidditch, vous avez en tête de découvrir ces 10 valeurs.
Voici donc le programme que j'ai rédigé pour y répondre (je comptais faire la fonction qui prend les 10 plus grands, mais vu que cette partie ne fonctionne pas, j'ai préféré essayer de trouver une solution avant) :
Le print (x,y,z) était pour voir si les modifications étaient faites ou non et je voyais que du (0,0,0) en boucle, je ne vois pas pourquoi, pourriez-vous m'aider s'il vous plait ?
cordialement
Si Nicolas Flamel est célèbre pour sa pierre philosophale, Léonard de Pise, de 200 ans son aîné, a aussi laissé sa trace chez les sorciers, en créant le vif d'or. Bien que les mouvements du vif d'or semblent erratiques, celui-ci a en fait pour fonction de joindre des points de l'espace dans un ordre préétabli.
Précisément, la position du vif d'or est définie par trois coordonnées : abscisse, ordonnée et hauteur. À partir de sa position (x, y, z), le vif va alors se déplacer en ligne droite vers sa position suivante donnée par : (y, z, (x + y + z) % n). Pour rappel, l'opération % donne le reste de la division entière, et n est ici une valeur positive, supérieure à 1, fixée à l'avance.
Le vif d'or entame toujours sa course en (0, 0, 1). Supposons que n soit égal à 85, alors le vif d'or joindra successivement les positions suivantes :
1. (0, 0, 1)
2. (0, 1, 1)
3. (1, 1, 2)
4. (1, 2, 4)
5. (2, 4, 7)
6. (4, 7, 13)
7. (7, 13, 24)
8. (13, 24, 44)
9. (24, 44, 81)
10. (44, 81, 64) car (24 + 44 + 81) % 85 donne 64
11. (81, 64, 19) car (44 + 81 + 64) % 85 donne 19
...
Au bout d'un certain temps, le vif d'or reviendra à sa position d'origine et suivra donc à nouveau exactement le même parcours. Dans l'exemple précédent, cela se produit à la position 2977 :
...
2974. (0, 84, 1)
2975. (84, 1, 0)
2976. (1, 0, 0)
2977. (0, 0, 1)
2978. (0, 1, 1)
2979. (1, 1, 2)
...
En choisissant la valeur de n, on fait donc varier la trajectoire du vif d'or, ainsi que le temps qu'il met avant de revenir à sa position d'origine.
Léonard de Pise a calculé les 10 meilleures valeurs de n et les a entrées dans tous les vifs d'or. Il s'agit des valeurs de n inférieures ou égales à 200, qui donnent les parcours les plus longs (c'est-à-dire pour lesquels le vif d'or effectue le plus de mouvements avant de repasser par sa position initiale).
Afin d'essayer de prévoir les déplacements du vif d'or lors du prochain match de Quidditch, vous avez en tête de découvrir ces 10 valeurs.
Voici donc le programme que j'ai rédigé pour y répondre (je comptais faire la fonction qui prend les 10 plus grands, mais vu que cette partie ne fonctionne pas, j'ai préféré essayer de trouver une solution avant) :
nb=[0] for n in range (1, 201): nb.append(1) x=0 y=0 z=1 while not (x,y,z)==(0,0,1) or nb[n]==0: (x, y, z) = (y, z, (x + y + z) % n) nb[n]=nb[n]+1 print (x,y,z) print (nb)
Le print (x,y,z) était pour voir si les modifications étaient faites ou non et je voyais que du (0,0,0) en boucle, je ne vois pas pourquoi, pourriez-vous m'aider s'il vous plait ?
cordialement
A voir également:
- Défi python, j ene trouves pas mon erreur
- Citizen code python - Accueil - Outils
- Ou trouver mon adresse ip - Guide
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
je ne vois pas que du (0,0,0) en boucle.
es-tu certain d'avoir partagé le bon programme?
je ne vois pas que du (0,0,0) en boucle.
es-tu certain d'avoir partagé le bon programme?
Par contre ça ne change rien au fait que je me sois trompé quelque part mais je ne sais pas où