cs_oddy
Messages postés3Date d'inscriptionvendredi 4 mai 2007StatutMembreDernière intervention24 mai 2007
-
4 mai 2007 à 13:14
cs_oddy
Messages postés3Date d'inscriptionvendredi 4 mai 2007StatutMembreDernière intervention24 mai 2007
-
24 mai 2007 à 10:51
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
MoDDiB
Messages postés546Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention 4 mai 20071 4 mai 2007 à 14:50
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.
cs_oddy
Messages postés3Date d'inscriptionvendredi 4 mai 2007StatutMembreDernière intervention24 mai 2007 5 mai 2007 à 18:18
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
emmatopiak
Messages postés149Date d'inscriptionmercredi 28 mars 2007StatutMembreDernière intervention17 mai 20072 5 mai 2007 à 22:40
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_oddy
Messages postés3Date d'inscriptionvendredi 4 mai 2007StatutMembreDernière intervention24 mai 2007 24 mai 2007 à 10:51
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...