Aller au contenu

[Programmation] Un petit niveau en Python ?


Flok

Messages recommandés

Bonsoir à tous !

 

Pour mon TIPE, j'essaye d'écrire un programme qui forme toutes les combinaisons possibles de mots à partir d'une liste de mots. Je vous donne un exemple : ['flok','consomac'] renverrait ['flok','consomac','flokconsomac',consomacflok'] :)

 

C'est très facile de le faire pour un nombre de mots choisi auparavant, mais j'aimerais qu'on puisse le faire avec un nombre n de mots...

 

Ci-dessous la version 5 mots, avec des boucles for, mais je ne peux pas faire une infinité de boucles for, malheureusement ;)

 

254fc75989.png

 

Si vous avez une idée d'algorithme, pas forcément en Python, mais juste comment remplacer plein de boucles for imbriquées, svp :)

 

Merci ! :D

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir à tous !

 

Pour mon TIPE, j'essaye d'écrire un programme qui forme toutes les combinaisons possibles de mots à partir d'une liste de mots. Je vous donne un exemple : ['flok','consomac'] renverrait ['flok','consomac','flokconsomac',consomacflok'] :)

 

C'est très facile de le faire pour un nombre de mots choisi auparavant, mais j'aimerais qu'on puisse le faire avec un nombre n de mots...

 

Ci-dessous la version 5 mots, avec des boucles for, mais je ne peux pas faire une infinité de boucles for, malheureusement ;)

 

[Grosse screenshot]

 

Si vous avez une idée d'algorithme, pas forcément en Python, mais juste comment remplacer plein de boucles for imbriquées, svp :)

 

Merci ! :D

Toi aussi tu fais prepa ?! Mais tout le monde est en math sup math spé, ici !! ;-)

Malheureusement, je peux pas t'aider (on a commence le python cette semaine, chez nous, et vu que personne n'y comprend rien on n'est pas prêt de faire des vrais programmes...), mais j'aimerais savoir comment ce truc s'intègre à un TIPE... 

Lien vers le commentaire
Partager sur d’autres sites

Tu fais un appel récursif. Au rang n tu fais une boucle for qui te placera au début de ta chaine le premier mot, qui l'enlève de la liste, et tu rappelles ton programme au rang n-1. Avec Python ça peut se faire avec des fonctions.

 

C'est le classique de la fonction factorielle, si tu cherches un peu, tu ne devrais pas avoir de mal à trouver, hésite pas à dire ou tu en es, mais ça n'est pas trop difficile normalement.

 

Bonne chance.

Lien vers le commentaire
Partager sur d’autres sites

Tu fais un appel récursif. Au rang n tu fais une boucle for qui te placera au début de ta chaine le premier mot, qui l'enlève de la liste, et tu rappelles ton programme au rang n-1. Avec Python ça peut se faire avec des fonctions.

 

C'est le classique de la fonction factorielle, si tu cherches un peu, tu ne devrais pas avoir de mal à trouver, hésite pas à dire ou tu en es, mais ça n'est pas trop difficile normalement.

 

Bonne chance.

 

J'ai du mal à penser récursif... Je vais essayer de voir comment on peut faire ce programme en récursif, merci !

Lien vers le commentaire
Partager sur d’autres sites

Un prépa qui n'aime pas la récursivité, t'es pas en math au moins? ;)

 

Si si !

 

(J'ai toujours pas trouvé comment faire en récursif)

Modifié par Flok
Lien vers le commentaire
Partager sur d’autres sites

Il y a aussi moyen sans récursivité.

 

Dim Pointeur[N] as integer, C as integer

dim h as boolean, i as boolean

 

do while h = true

i = false

C = 0

do while i = false

if Pointeur[C] < N then

Pointeur[C] = Pointeur[C] + 1

i = false

else

C = C+1

if C <= N then

Pointeur[C] = 0

C = C + 1

else

i = false

h = false

endif

endif

loop

if h = true then (probablement optimisable)

/* ici faire une boucle qui ajoute les mots Mots[Pointeur[C]] */

endif

loop

Lien vers le commentaire
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...