Défi d'algorithmie : Je ne trouves pas mon erreur
Résolu
Captainbleu
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'apprends python grâce à la pratique et je suis tombé sur ce défi :
Une B2-suite est une suite d'entiers strictement croissante telle qu'il n'existe pas deux couples de termes (un couple peut être formé du même terme utilisé deux fois) qui donnent la même somme.
Dans la suite, nous nous intéressons à des B2-Suites particulières construites de manière incrémentale à partir de 4 premiers termes arbitraires. Pour construire ces suites, on choisira systématiquement d'ajouter le terme le plus petit possible qui satisfait les propriétés des B2-Suites.
Par exemple, si le début de la suite est 1,3,6,7, le terme suivant sera nécessairement 14. En effet :
ça ne peut pas être 8 (car 8+1=9 et 6+3 vaut déjà 9)
ça ne peut pas être 9 (car 9+1=10 et 3+7 vaut déjà 10)
ça ne peut pas être 10 (car 10+3=13 et 7+6 vaut déjà 13)
ça ne peut pas être 11 (car 11+1=12 et 6+6 vaut déjà 12)
ça ne peut pas être 12 (car 12+1=13 et 7+6 vaut déjà 13)
ça ne peut pas être 13 (car 13+1=14 et 7+7 vaut déjà 14)
ça peut être 14
On choisira donc U(4)=14
En procédant de même pour calculer U(5), on trouve : U(5)=23 puis U(6)=33.
Pour ce défi n=18 et les quatre premiers termes sont 1, 17, 31, 41. Vous devez répondre en donnant d'une part la valeur du terme U(n) et d'autre part la somme de tous les termes de U(0) à U(n) inclus.
Le programme que j'ai réalisé pour trouver la réponse :
Grâce à ce code, je trouve U(18)=371 et que la somme de tous les termes, elle fait 2366. Mais le site me dit que ce n'est pas la bonne réponse, pouvez-vous m'aider s'il vous plaît.
Cordialement.
PS : Si vous voulez tester votre réponse avant de répondre, c'est possible ici : https://pydefis.callicode.fr/defis/B2Suites/txt
J'apprends python grâce à la pratique et je suis tombé sur ce défi :
Une B2-suite est une suite d'entiers strictement croissante telle qu'il n'existe pas deux couples de termes (un couple peut être formé du même terme utilisé deux fois) qui donnent la même somme.
Dans la suite, nous nous intéressons à des B2-Suites particulières construites de manière incrémentale à partir de 4 premiers termes arbitraires. Pour construire ces suites, on choisira systématiquement d'ajouter le terme le plus petit possible qui satisfait les propriétés des B2-Suites.
Par exemple, si le début de la suite est 1,3,6,7, le terme suivant sera nécessairement 14. En effet :
ça ne peut pas être 8 (car 8+1=9 et 6+3 vaut déjà 9)
ça ne peut pas être 9 (car 9+1=10 et 3+7 vaut déjà 10)
ça ne peut pas être 10 (car 10+3=13 et 7+6 vaut déjà 13)
ça ne peut pas être 11 (car 11+1=12 et 6+6 vaut déjà 12)
ça ne peut pas être 12 (car 12+1=13 et 7+6 vaut déjà 13)
ça ne peut pas être 13 (car 13+1=14 et 7+7 vaut déjà 14)
ça peut être 14
On choisira donc U(4)=14
En procédant de même pour calculer U(5), on trouve : U(5)=23 puis U(6)=33.
Pour ce défi n=18 et les quatre premiers termes sont 1, 17, 31, 41. Vous devez répondre en donnant d'une part la valeur du terme U(n) et d'autre part la somme de tous les termes de U(0) à U(n) inclus.
Le programme que j'ai réalisé pour trouver la réponse :
tab = [1, 17, 31, 41] somme = [18, 32, 42, 48, 58, 72] for k in range (15): x=tab[-1]+1 n=0 while n<len(tab) and len(tab)==k+4: if not x+tab[n] in somme and n==(len(tab)-1): tab.append(x) for i in range (k+4): somme.append(x+tab[i]) elif not x+tab[n] in somme: n=n+1 else: n=0 x=x+1
Grâce à ce code, je trouve U(18)=371 et que la somme de tous les termes, elle fait 2366. Mais le site me dit que ce n'est pas la bonne réponse, pouvez-vous m'aider s'il vous plaît.
Cordialement.
PS : Si vous voulez tester votre réponse avant de répondre, c'est possible ici : https://pydefis.callicode.fr/defis/B2Suites/txt
A voir également:
- Défi d'algorithmie : Je ne trouves pas mon erreur
- Realtek high defi - Télécharger - Pilotes & Matériel
- REDIM [Algorithmie] - Forum Programmation
- Un vrai défi - Forum Windows
- Face à un défi de réinstallation - Forum Windows
- Le colonel - défi ricard video - Forum Réseaux sociaux
2 réponses
Bonjour
je n'ai pas encore cherché à comprendre ton code, mais ce qui m'interpelle de suite c'est que tu figes les choses.
A ta place j'aurais fait un code qui demande la suite de départ, afin de vérifier qu'avec la suite exemple de l'énoncé il donne le bon résultat.
je n'ai pas encore cherché à comprendre ton code, mais ce qui m'interpelle de suite c'est que tu figes les choses.
A ta place j'aurais fait un code qui demande la suite de départ, afin de vérifier qu'avec la suite exemple de l'énoncé il donne le bon résultat.
Bonjour,
Comme Whismeril, il te faut en entrée les 2 données n : 18 tab : [1, 17, 31, 41]. Le n va être l'indice de boucle. Puis le programme doit calculer les sommes, pas les mettre en dur.
Et avant de t'attaquer au défi, tu as un exemple résolu, tu devrais déjà essayer de le reproduire :
n = 6 tab = (1,3,6,7) et attendu 1, 3, 6, 7, 14, 23, 33 ===> 33,87
Comme Whismeril, il te faut en entrée les 2 données n : 18 tab : [1, 17, 31, 41]. Le n va être l'indice de boucle. Puis le programme doit calculer les sommes, pas les mettre en dur.
Et avant de t'attaquer au défi, tu as un exemple résolu, tu devrais déjà essayer de le reproduire :
n = 6 tab = (1,3,6,7) et attendu 1, 3, 6, 7, 14, 23, 33 ===> 33,87
A ta place, je commencerai par écrire une fonction qui calcule toutes les sommes d'une suite donnée.