Votre question
Résolu

Algorithme calculant somme de chiffres [Algobox]

Tags :
  • Algorithme
  • Creation
Dernière réponse : dans Programmation
10 Octobre 2016 20:19:23

Bonjour à tous,

Je bloque sur la création d'un algorithme sur algobox qui doit comporte les réquisitions suivantes :
- il doit me donner une série de 4 chiffres des les nombres allant de 1 à 12
- il affiche cette série seulement si le total des 4 chiffres équivaut à 25 (ou autre valeur, peut importe)
- aucun des 4 chiffres de la série ne doit être similaire à un autre

J'ai joint à ce post un aperçu de ce que j'ai réussi à produire, c'est déjà très avancé, le seul problème est que les séries s'affichent dans tout les ordres possibles et je ne souhaite qu'un seul ordre (exemple : l'algorithme affiche 1;2;4;3 1;4;3;2 1;3;2;4 2;1;3;4 etc... alors je ne souhaite que 1;2;3;4) alors peut-être que le programme n'est pas approprié ou bien qu'il manque une simple ligne, en tout cas si vous pensez détenir la réponse n'hésitez pas !
Merci d'avance

http://image.noelshack.com/fichiers/2016/41/1476123378-...

Autres pages sur : algorithme calculant somme chiffres algobox

Meilleure solution

12 Novembre 2016 19:41:28

il faut que b boucle à partir de a, que c boucle à partir de b, etc.
ça t'assure de ne trouver que la liste croissante (et tu passes par toutes les listes croissantes, donc toutes les possibilités).
partage
13 Novembre 2016 14:57:51

Je n'ai pas entièrement compris votre réponse mais votre astuce de liste croissante m'a mis la puce à l'oreille, effectivement j'ai ajouté la condition "si a<b ET b<c ET c<d" et tout fonctionne parfaitement ! Merci
m
0
l
25 Novembre 2016 21:22:12

Pour l'explication:
D'abord, si tu veux générer toutes les listes croissantes, c'est à dire toutes les listes où les nombres suivants sont plus grand que les précédents, il faut forcément qu'un élément suivant soit plus grand que le précédent.
donc, pour une valeur de b donnée, si tu veux que c soit plus grand que b, il faut que c > b. Si tu veux tester tous les c possibles, il te faut donc faire une boucle à partir de b. Puis, par récursivité, pour tous les b et c précédemment trouvés, tu peux boucler sur tous les d à partir de c, etc.
En faisant ça, tu passes par toutes les possibilités de nombres croissants et de façon unique.

Enfin, je parle de listes croissantes, parce si tu prends au hasard des nombres pour a, b, c et d, alors tu peux les classer dans l'ordre pour faire une liste croissante. Par exemple : 1 12 10 2 => 1 2 10 12.
Ton algorithme initial te permettait d'avoir toutes les permutations possibles pour ces 4 nombres (soit 24 possibilités). Comme on sait, qu'il n'y a qu'un seul ordre croissant possible pour 1 12 10 et 2, alors tu es finalement certain de :
- ne trouver qu'une seule combinaison pour les nombres 1, 2, 10 et 12.
- l'avoir passé dans la boucle, puisque tu as fait toutes les listes croissantes, dont 1 2 10 12.

Donc, tu trouves tous les cas possibles de façon unique.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS