Précédent   Forum des professionnels en informatique > Autres langages > Pascal
Pascal Forum d'entraide sur la programmation en langage Pascal et sur les EDI. Avant de poster -> la F.A.Q Pascal, les cours
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2012, 21h28   #1
Invité régulier
 
Homme Arthur Cousseau
Inscription : octobre 2011
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme Arthur Cousseau
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : octobre 2011
Messages : 23
Points : 7
Points : 7
Par défaut Trouver les solutions d'un jeu d'identification d'un mot avec des règles de codage

Bonjour, bonsoir
Voilà, je viens de voir un exercice dans le journal qui normalement requiert une bonne connaissance de la langue française pour être résolu.
Je vous poste le principe + Un exemple ( les lettres à droite )
Vous l'aurez compris, le but est de placer dans la case correspondante une des 3 lettres du mot correspondant à son matricule : pour la 1ère case, il faut mettre une lettre du premier triplet, la 2e case une lettre du second triplet, etc...
Je me demandais simplement s'il était possible de créer un algorithme pour trouver la solution, je pensais à un truc un peu "bourrin" où le programme afficherait la liste des combinaisons possibles. Mais même ça, je n'y arrive pas Je me retrouve avec plein de conditions et de boucles imbriquées, c'est la galère ! Quelqu'un qui serait intéressé aurait-il une idée à me proposer ?
Images attachées
Type de fichier : png Capture d’écran 2012-01-24 à 21.14.45.png (31,0 Ko, 16 affichages)
eldoir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 23h33   #2
Rédacteur/Modérateur
 
Avatar de wormful_sickfoot
 
Inscription : avril 2002
Messages : 2 134
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2002
Messages : 2 134
Points : 2 389
Points : 2 389
Il faut analyser le problème calmement. Finalement le jeu consiste à prendre une lettre du groupe 1, puis une du groupe 2 puis une du groupe 3. A partir de là, 3 lettres sont choisies. Si je comprends bien, au tour d'après, on choisit une lettre du groupe 1 qui n'a pas été déjà choisie, pareil pour le groupe 2, pareil pour le groupe 3. On boucle au total 3 fois.

Evidemment, pour avoir un algorithme optimisé, on ne fera pas appel à randomize pour choisir quelle lettre prendre.

Pour simplifier un peu la chose on peut aussi considérer que les 3 cases qui doivent être remplies par le groupe 1 sont consécutives, idem pour le groupe 2 et le groupe 3. Autant dire, ca revient à afficher les 6 combinaisons possibles pour chaque groupe (au final, si je me suis pas gouré , le nombre de combinaisons possibles est 6^3).

Pour les boucles, il faut à tout pris essayer de minimiser leur nombre, et éviter qu'elles s'imbriquent... Une solution comme je viens de l'exposer, serait de calculer toutes les combinaisons de 3 cases du groupe1, et du groupe2 et du groupe 3, puis les "réassembler" dans une boucle bête.

En espérant que ca t'aide un peu !
__________________
wormful_sickfoot - Rédacteur et Modérateur Pascal
wormful_sickfoot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 06h18   #3
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 3 411
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 42
Localisation : Réunion

Informations professionnelles :
Activité : Freelance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2002
Messages : 3 411
Points : 6 705
Points : 6 705
le problème majeur me semble être d'identifier la réponse sans un dictionnaire ce n'est pas possible.

avec un dictionnaire ça devient par contre très simple, il faut un mot de 6 lettres qui commence par l'une des lettre du 1, puis l'une des lettre du 2...en fait on doit très vite trouver la solution.

après pour faire défiler les combinaison c'est simple, prenons un exemple plus simple
1 ABC
2 DEF
3 GHI

premières combinaisons
ADGADGADG
ADGADGADH
ADGADGADI
ADGADGAEG

en fait c'est un comptage en base 3 qui utilise des lettres
0000000000
0000000001
0000000002
0000000010
0000000011
0000000012
0000000100
etc...
soit 3^9 possibilités (19683)
__________________
Developpez.com: Mes articles
Entreprise: Execute SARL
Produits : UPnP, RemoteOffice sous Delphi
Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%
Paul TOTH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2012, 18h10   #4
Membre expérimenté
 
Inscription : août 2008
Messages : 455
Détails du profil
Informations personnelles :
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : août 2008
Messages : 455
Points : 575
Points : 575
Envoyer un message via Skype™ à thierry.chich
La technique des combinaison, qui vient en premier n'est pas très efficace. Elle est assez simple à programmer comme l'explique Paul TOTH. Il faut utiliser un seul compteur qui va de 0 à 3^9 et l'écrire en base 3. Mais ça ne la rend pas efficace.

La solution consistant à charger un dictionnaire des mots de 9 lettres et à procéder par élagage serait effectivement bien plus efficace. Le nombre d'itération serait alors très inférieur à 9n (ou n est le nombre de mots de 9 lettres dans le dictionnaire). Bien plus rapide 3^9n (génération de tout les cas, et comparaison dans la liste des mots de 9 lettres).
thierry.chich est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2012, 22h31   #5
Invité régulier
 
Homme Arthur Cousseau
Inscription : octobre 2011
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme Arthur Cousseau
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : octobre 2011
Messages : 23
Points : 7
Points : 7
Hum...
Alors dans ce cas-là je suis désolé, mais ça ne relève pas de mes compétences
Je pensais que ce serait plus simple... :/
eldoir est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h55.


 
 
 
 
Partenaires

Hébergement Web