OVH Cloud OVH Cloud

algorithme pour combinaison de lettres

15 réponses
Avatar
yann
je cherche un alogrithme pour afficher une combinaison
de lettres, par exemple, lorsqu' un utilisateur tape un
mot "FJK" ou même plus, il faut que mon programme soit capable d'afficher la
combinaison de façon suivante :
F
J
K
FJ
FJK
JK

merci d'avance

yann

5 réponses

1 2
Avatar
Barsalou
Pourquoi FJU (par exemple) ne figure-t-il pas dans la liste ?
Parmi toutes les combinaisons de lettres quelles sont celles qui s'affichent
?
J'ai noté que leurs lettres sont dans l'ordre alphabétique et qu'elles sont
classées dans cet ordre, mais pas pourquoi certaines ne doivent pas
s'afficher.

Difficile de concocter un algorithme sans cette précision.

A+
Avatar
yann
Merci beaucoup Fred, c'est exactement ça, en plus avec votre formule
magique, il fait apparaître les combinaisons manquées FJU et FKU

"Barsalou" a écrit dans le message de
news:
Pourquoi FJU (par exemple) ne figure-t-il pas dans la liste ?
Parmi toutes les combinaisons de lettres quelles sont celles qui
s'affichent ?
J'ai noté que leurs lettres sont dans l'ordre alphabétique et qu'elles
sont classées dans cet ordre, mais pas pourquoi certaines ne doivent pas
s'afficher.

Difficile de concocter un algorithme sans cette précision.

A+


Avatar
yann
Merci encore Fred
Pardonnez-moi Fred de vous importuner encore une fois avec mes questions
débiles, pourriez-vous m'indiquer comment vous procédez pour arriver cette
algorithme.

yann

"yann" a écrit dans le message de news:
429cbec4$0$7026$
Merci beaucoup Fred, c'est exactement ça, en plus avec votre formule
magique, il fait apparaître les combinaisons manquées FJU et FKU

"Barsalou" a écrit dans le message
de news:
Pourquoi FJU (par exemple) ne figure-t-il pas dans la liste ?
Parmi toutes les combinaisons de lettres quelles sont celles qui
s'affichent ?
J'ai noté que leurs lettres sont dans l'ordre alphabétique et qu'elles
sont classées dans cet ordre, mais pas pourquoi certaines ne doivent pas
s'afficher.

Difficile de concocter un algorithme sans cette précision.

A+






Avatar
Fred
Dans son message 429cc5b1$0$23450$
yann nous dit :

Merci encore Fred
Pardonnez-moi Fred de vous importuner encore une fois avec mes
questions débiles, pourriez-vous m'indiquer comment vous procédez
pour arriver cette algorithme.

yann

"yann" a écrit dans le message de news:
429cbec4$0$7026$
Merci beaucoup Fred, c'est exactement ça, en plus avec votre formule
magique, il fait apparaître les combinaisons manquées FJU et FKU

"Barsalou" a écrit dans le
message de news:
Pourquoi FJU (par exemple) ne figure-t-il pas dans la liste ?
Parmi toutes les combinaisons de lettres quelles sont celles qui
s'affichent ?
J'ai noté que leurs lettres sont dans l'ordre alphabétique et
qu'elles sont classées dans cet ordre, mais pas pourquoi certaines
ne doivent pas s'afficher.

Difficile de concocter un algorithme sans cette précision.

A+







Bonsoir,
L'idée de l'algorithme est que l'on construit une des "combinaisons" en
retenant, ou non, chaque lettre, lorsque l'on parcours le mot de départ de
gauche à droite.
exemple : ABC
je prends A, je prends B, je prends C
je prends A, je prends B, je ne prends pas C
je prends A, je ne prends pas B, je prends C
etc ...
Il faut essayer toutes les combinaisons possibles de ces "je prends", "je ne
prends pas"

C'est exactement le principe de la représentation binaire d'un nombre :
je prends = 1
je ne prends pas = 0

Donc, avec 3 lettres
000 -> chaîne vide (pas intéressant)
001 -> C
010 -> B
011 -> BC
100 -> A
101 -> AC
110 -> AB
111 -> ABC

On arrive donc à retrouver toutes ces combinaisons qui ont l'air si
compliquées avec une simple boucle faisant varier un compteur de 1 (0 est
inintéressant) jusqu'à 7 dans mon exemple.
pour 2 lettres -> 2 bits -> 2^2 possibilités (4)
3 lettres -> 3 bits -> 2^3 possibilités (8)
et ainsi de suite.

Dans la boucle, je teste le bit qui correspond à la position de la lettre
dans le mot. S'il est à un j'affiche, sinon, je n'affiche pas.
Pour tester un bit, il faut faire un "Et binaire" entre la valeur du
compteur et la puissance de 2 correspondant à la position de la lettre et
voir si cela donne 0 (ou bien cette même puissance de 2)

Toujours avec mes 3 lettres, à chaque tour de la boucle principale, je
masque successivement mon compteur avec :
001, puis 010, puis 100.

J'espère avoir été assez clair ? En me relisant je vois qu'au début je suis
parti tranquillement mais que j'ai bien accéléré sur la fin :o)

N'hésite pas à demander si certaines de mes explications sont trop obscures.


--
Fred
Avatar
yann
Merci beaucoup,


"Fred" a écrit dans le message de
news:
Dans son message 429cc5b1$0$23450$
yann nous dit :

> Merci encore Fred
> Pardonnez-moi Fred de vous importuner encore une fois avec mes
> questions débiles, pourriez-vous m'indiquer comment vous procédez
> pour arriver cette algorithme.
>
> yann
>
> "yann" a écrit dans le message de news:
> 429cbec4$0$7026$
>> Merci beaucoup Fred, c'est exactement ça, en plus avec votre formule
>> magique, il fait apparaître les combinaisons manquées FJU et FKU
>>
>> "Barsalou" a écrit dans le
>> message de news:
>>> Pourquoi FJU (par exemple) ne figure-t-il pas dans la liste ?
>>> Parmi toutes les combinaisons de lettres quelles sont celles qui
>>> s'affichent ?
>>> J'ai noté que leurs lettres sont dans l'ordre alphabétique et
>>> qu'elles sont classées dans cet ordre, mais pas pourquoi certaines
>>> ne doivent pas s'afficher.
>>>
>>> Difficile de concocter un algorithme sans cette précision.
>>>
>>> A+

Bonsoir,
L'idée de l'algorithme est que l'on construit une des "combinaisons" en
retenant, ou non, chaque lettre, lorsque l'on parcours le mot de départ de
gauche à droite.
exemple : ABC
je prends A, je prends B, je prends C
je prends A, je prends B, je ne prends pas C
je prends A, je ne prends pas B, je prends C
etc ...
Il faut essayer toutes les combinaisons possibles de ces "je prends", "je


ne
prends pas"

C'est exactement le principe de la représentation binaire d'un nombre :
je prends = 1
je ne prends pas = 0

Donc, avec 3 lettres
000 -> chaîne vide (pas intéressant)
001 -> C
010 -> B
011 -> BC
100 -> A
101 -> AC
110 -> AB
111 -> ABC

On arrive donc à retrouver toutes ces combinaisons qui ont l'air si
compliquées avec une simple boucle faisant varier un compteur de 1 (0 est
inintéressant) jusqu'à 7 dans mon exemple.
pour 2 lettres -> 2 bits -> 2^2 possibilités (4)
3 lettres -> 3 bits -> 2^3 possibilités (8)
et ainsi de suite.

Dans la boucle, je teste le bit qui correspond à la position de la lettre
dans le mot. S'il est à un j'affiche, sinon, je n'affiche pas.
Pour tester un bit, il faut faire un "Et binaire" entre la valeur du
compteur et la puissance de 2 correspondant à la position de la lettre et
voir si cela donne 0 (ou bien cette même puissance de 2)

Toujours avec mes 3 lettres, à chaque tour de la boucle principale, je
masque successivement mon compteur avec :
001, puis 010, puis 100.

J'espère avoir été assez clair ? En me relisant je vois qu'au début je


suis
parti tranquillement mais que j'ai bien accéléré sur la fin :o)

N'hésite pas à demander si certaines de mes explications sont trop


obscures.


--
Fred





1 2