Jump to content

[Programmation] Un petit niveau en Python ?


Flok
 Share

Recommended Posts

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

Link to comment
Share on other 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... 

Link to comment
Share on other 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.

Link to comment
Share on other 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 !

Link to comment
Share on other 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)

Edited by Flok
Link to comment
Share on other 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

Link to comment
Share on other 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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...