|
|
|
|
Bonjour à tous,
Je me creuse la tête depuis un bon moment déjà pour résoudre ceci :
J'ai 3 éléments A, B et C. Comment faire pour construire toutes les combinaisons possibles (ABC, ACB, BAC, BCA, CAB, CBA), sachant que le nombre d'éléments peut aller jusqu'à 4 ou 5. Le nombre de combinaisons est n!, mais part ça...
J'ai essayé en vain plusieurs combinaisons de boucles FOR/NEXT, DO/LOOP...
A défaut de me donner l'algorythme, voire le prog en VB, si quelqu'un a une piste, une idée de départ, c'est pas de refus!
A+,
Kobaya.
Configuration: Windows XP PRO Pentium 4
Répondre à pom
|
Voici le code en liberty BASIC
text$="ABCDE" debut$="" global result$, debut$, glon, nb debut$=text$ glon=len(text$) r$=combine$(text$) print "il y a ";nb;" réponses." input r$ end function combine$(text$) lon=len(text$) for i=1 to lon trace 2 text2$=mid$(text$,i+1)+left$(text$,i-1) ch$=mid$(text$,i,1) result$=result$+ch$ if text2$<>"" then r$=combine$(text2$) else rlon=len(result$) dlon=glon-rlon result$=left$(debut$,dlon)+result$ debut$=result$ print result$ result$="" nb=nb+1 end if next i combine$="" end function @++ liberty BASIC France : http://lbasic.atomysk.com et son Forum d'aide : http://lbasic.atomysk.com/forum |
La modif est simple, j'ai ajouté la "sub" nomée doublon.
text$="ABCDEA" debut$="" global result$, debut$, glon, nb, blok debut$=text$ glon=len(text$) call doublon text$ if blok=1 then end r$=combine$(text$) print "il y a ";nb;" réponses." input r$ end function combine$(text$) lon=len(text$) for i=1 to lon trace 2 text2$=mid$(text$,i+1)+left$(text$,i-1) ch$=mid$(text$,i,1) result$=result$+ch$ if text2$<>"" then r$=combine$(text2$) else rlon=len(result$) dlon=glon-rlon result$=left$(debut$,dlon)+result$ debut$=result$ print result$ result$="" nb=nb+1 end if next i combine$="" end function sub doublon txt$ lon=len(txt$) for i=1 to lon ch$=mid$(txt$, i, 1) for j=1 to lon if j=i then exit for if ch$=mid$(txt$, j, 1) then blok=1: exit for next j if blok=1 then exit for next i if blok=1 then notice "Doublon detecté !"+chr$(13)+"Le caractère '"+ch$+"' à été detecté en double." end if end sub et maintenant, cela te convient t'il ? voici le resultat pour la chaine "ABCD": ABCD ABDC ACDB ACBD ADBC ADCB BCDA BCAD BDAC BDCA BACD BADC CDAB CDBA CABD CADB CBDA CBAD DABC DACB DBCA DBAC DCAB DCBA il y a 24 réponses. ? |
Salut à tous,
|
Répondre à kikoune
|
Bonjour,
|
Bonsoir!
|
Répondre à alex_PMU
|
Sinon en batch:
@echo off for %%i in (A,B,C,D) do ( for %%j in (A,B,C,D) do ( for %%k in (A,B,C,D) do ( for %%l in (A,B,C,D) do ( echo %%i%%j%%k%%l ) ) ) ) pause Je sais pas si c'est sa que tu cherche. J'espère t'avoir aider. Bilou. Il y a des jours faut pas m'chercher. Et y'a des jours tous les jours ! |
Je pe permet de vous demander la quasi même chose !
|
Voici mes chiffre 8 0 0 1 7 6 4 5 2 6 4 5
|
Bonjour,aujourd'hui je vous propose un petit défi , ci desous se trouvent deux problèmes mathématiques , si vous sentez que vous avez l'âme d'un mathématicien essayez les mais attention vous n'avez pas le droit d'y passer plus de 30 minutes, la question est êtes-vous un mathématicien ou un amateur qui veut progresser , envoyez moi vos résultat par message sur le forum ou sur mon adresse e-mail maxraiders@hotmail.fr en scannant votre copie par exemple et si vous le désirez joignez votre adresse e-mail pour que je vous envoi les réponses et n'hésitez pas si vous voulez un petit coup de pouce .Merci de jouer le jeu (niveau 1S)
|