Besoin d'aide pour un algo mister mind

Signaler
Messages postés
3
Date d'inscription
vendredi 4 mai 2007
Statut
Membre
Dernière intervention
24 mai 2007
-
cs_oddy
Messages postés
3
Date d'inscription
vendredi 4 mai 2007
Statut
Membre
Dernière intervention
24 mai 2007
-
bonjour a tous !!!

je dois créer un programme mastermind et j'ai du mal à réaliser mon algo... si vous avez des pistes !!! merci

5 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
44
Salut,

Tu peux t'inspirer des sources deja presentes sur le site
Celle ci par exemple : http://www.csharpfr.com/codes/MASTERMIND-AVEC-GESTION-SCORES-XML_32071.aspx

Mx
MVP C# 
Messages postés
546
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
4 mai 2007
1
Le mieux est de chercher par toi même.
Bien entendu il est possible que tu sois bloqué par quelque chose mais dans ce cas décris précisemment ce problème et nous pourrons t'aider.
Messages postés
3
Date d'inscription
vendredi 4 mai 2007
Statut
Membre
Dernière intervention
24 mai 2007

c'est vrai que mon message n'était pas trés explicite... j'ai fait plusieur alogo qui ne fonctionne pas mais lorsque je les traduis en prog, aucune erreur ne m'est signalé donc je suppose que le pb vient de mon algo...

voilà ce que je dois faire :  le programme choisit 4couleurs au hasard parmis 6 couleurs possible
l'utilisateur doit trouver la combinaison de couleur en 10 essais et à chaque essai le programme doit indiquer P si une couleur est bien placée, D si une couleur est présente mais mal placée, enfin N pour chaque couleur non-présente. Bien sur, sans indiqué lesquelles... (je sais pas si j'ai été claire...)
(je n'ai pas précisé, le langage est RUBY, pas trés connu...)

voilà ce que j'ai fait :
j'ai réussi à créer le tableau secret (celui du programme) de 4 couleurs. Je l'appelle tab_secret.
j'ai créer le tableau du joueur, je l'appelle tab_joueur. Mon problème est au niveau de la comparaison, mon prog n'affiche que PPPP

valP = 0
valD=0
valN=0

pour i entre 0 et 3 faire
   si tab_secret[i] == tab_joueur[i] alors faire
         valP=valP+1
   sinon si 
         pour i entre 0..3 faire
            pour j entre 0..3 faire
               si tab_secret[i] == tab_joueur[j] alors faire
                     valD=valD+1
               fin si
             fin pour
            fin pour
      sinon valN= valN+1
      fin si
fin pour

écrire ("P"(*valP), "D"(*valD), "N"(*valN))
Messages postés
149
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
17 mai 2007
1
Salut,

Il y avait trois problèmes dans ton algo :
- deux boucles imbriquées avec "i" comme indice
- tu fais un "si" sans rien avec le "pour" juste après
- tu pouvais être amené à compter plusieurs fois des lettres
Voici ce que tu pourrais faire :


valP = 0
valD = 0
valN = 0


pour i de 0 a 3 faire
  si secret[i]==joueur[i] alors
    valP = valP+1
  sinon
    present = false
    pour j de 0 a 3 faire
      si secret[i]==joueur[j] et non present alors
        present = true
        valD = valD+1
      finsi
    finpour
    si non present alors
      valN = valN+1
    finsi
  finsi
finpour

Une autruche ne se cuit pas aux petits lardons.
Messages postés
3
Date d'inscription
vendredi 4 mai 2007
Statut
Membre
Dernière intervention
24 mai 2007

merci pour vos conseils, j'ai maintenant fait la programmation mais j'ai un problème avec le sous programme " comparaison_x" , si quelqu'un connait le langage ruby... merci !!!!!!!
X = couleur bien placée
x=couleur mal placée mais présente

voila la prog :

def comparaison_X?(tab_secret, tab_joueur, valX)

 for i in 0..3 do
  puts "couleur secret #{i} : #{tab_secret[i]}, couleur joueur : #{tab_joueur[i]}"
  if tab_secret[i] == tab_joueur[i] then
   valX=valX+1
  end
 end


return "X"*(valX)


end


def comparaison_x(tab_secret, tab_joueur, x)

 
 
 for i in 0..3 do
  for j in 0..3 do
   if tab_secret[i] == tab_joueur[j] && i!=j then
    x=x+1
   end
  end
 end
return "x"*(x)


end




 
#choix secret
tabordi=[]
tab_couleur = ["vert", "rouge", "bleu" , "marron", "jaune", "orange" ]
for i in 0..3
 tabordi[i] = tab_couleur[rand(tab_couleur.length)]
end


#afficher secret
for i in 0..3
 print " #{tabordi[i]}\n  "
end


#choix joueur


tab_joueur = []
for j in 0..3 do
 print " couleur#{j+1} : "
 couleur =gets.chomp
 tab_joueur [j] = couleur
end


valX = 0
x = 0


p comparaison_X?(tabordi, tab_joueur, valX)
p comparaison_x(tabordi, tab_joueur, x)

Tout en étant multiple, l'humanité est dabord une...