CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Cherche algorithme de combinaisons

Calmacil
Calmacil
Niveau 47
14 juin 2014 à 11:36:33

Bonjour, je cherche un algorithme qui permettrait de faire des combinaisons comme suis :

J'ai 5 éléments : A, B, C, D, E
J'ai une limite de capacité de 3.

Je voudrais obtenir toutes les combinaisons, même les duets et les simplets, SANS REPETITIONS. Genre j'obtiendrais pour ce cas :

A
AB
AC
AD
AE
ABC
ABD
ABE
ACD
ACE
ADE
B
BC
BD
BE
BCD
BCE
BDE
C
CD
CE
... etc.

Je sais que ça fait un peu "faites mon boulot", mais j'ai vraiment besoin de cet algo, et j'arrive pas à en trouver un qui convient sur le net. :noel:

Merci beaucoup à ceux qui s'y penchent en tout cas.

LEpigeon-888
LEpigeon-888
Niveau 12
14 juin 2014 à 12:09:25

Bah suffit de faire de simples additions, tu prends juste un nombre de départ (0) et t'ajoutes +1 à chaque fois, dès que les unités dépassent 4 tu les mets à 0 puis tu fais +1 aux dizaines, et pareil pour les centaines.

Après t'as plus qu'à convertir les chiffres en lettre :oui:

(aucune idée si il y a mieux/plus rapide, c'est juste la 1er chose qui m'ets passé par la tête)

LEpigeon-888
LEpigeon-888
Niveau 12
14 juin 2014 à 12:15:09

(après ce que je dis tu peux faire en sorte de l'adapter pour n'importe quelle "capacité" juste avec une petite boucle, et si t'as besoin d'avoir des lettres qui vont jusqu'à Z par exemple c'est possible aussi, faudra juste passer par un tableau d'int)

Caletlog
Caletlog
Niveau 10
14 juin 2014 à 12:18:53

Ruby proposant une fonction qui fait déjà ce que tu cherches ( array#combination, http://www.ruby-doc.org/core-2.1.2/Array.html#method-i-combination ), tu peux voir comment c'est implémenté (ici, en C) en cliquant sur le lien 'Click to toggle source' en haut à droite.
Ça pourra sans doute t'aider, même si c'est pas de l'algorithmique abstrait.

FortCommeMeric
FortCommeMeric
Niveau 10
14 juin 2014 à 12:46:25

En c++ : http://pastebin.com/WZVxT7NC

pour ton exemple ça donne ça : http://pastebin.com/TQkzCq31

LEpigeon-888
LEpigeon-888
Niveau 12
14 juin 2014 à 12:58:18

Je pense que c'est plus utile pour l'auteur de lui donner la marche à suivre plutôt que le code déjà tout fait :(

LEpigeon-888
LEpigeon-888
Niveau 12
14 juin 2014 à 13:04:27

Ah, par contre j'avais pas compris que tu pouvais pas utiliser 2 fois la même lettre, du coups mon truc sert a rien effectivement :oui:

Calmacil
Calmacil
Niveau 47
14 juin 2014 à 22:20:02

C'est bon j'ai trouvé, en C++ il y a une fonction de <algorithm> qui fait les permutations, c'est assez chelou à utiliser mais avec une démo ça marche bien.

Pseudo supprimé
Pseudo supprimé 15 juin 2014 à 13:26:19

une idée: ton pattern ressemble a un système binaire où chaque bit équivaut a une lettre:

00001 -> A
00010 -> B
00011 -> AB
00100 -> C
00101 -> AC
00111 -> ABC
...

http://ideone.com/1Sy99U

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment