Bonjour je suis actuellement bloqué sur ce problème.
Voici l'énoncé:
Vous avez sûrement déjà joué, étant enfant, au jeu de cartes appelé la « bataille ». Les enfants algoréens aiment aussi beaucoup jouer à une variante bien plus simple de ce jeu, et vous devez faire l’arbitre des parties. Comme il y a beaucoup d’enfants souhaitant jouer en même temps et que vous ne pouvez pas tout surveiller, vous décidez d’écrire un programme informatique pour déterminer le vainqueur de chaque partie.
Une partie se déroule ainsi :
On part d’un jeu contenant 52 cartes, chaque carte étant une lettre entre A et M, et chaque lettre étant présente 4 fois (avec différentes couleurs, mais on ne s’en occupera pas ici).
Les cartes, face cachée, sont mélangées et séparées en deux paquets (pas forcément de même taille !).
Les deux joueurs retournent la première carte de leur paquet : si les deux cartes sont identiques ils continuent à jouer, sinon celui qui a la carte la plus forte, c’est-à-dire la plus petite selon l’ordre alphabétique, gagne la partie.
Si un joueur n’a plus de carte, il perd ! Et oui, ce n’est pas très juste !
Si les deux joueurs n’ont en même temps plus de cartes, alors il y a égalité complète.
Étant donnés les deux paquets de cartes, à vous de déterminer le gagnant.
Entrée
L'entrée contient deux lignes, correspondant respectivement aux cartes du joueur 1 et du joueur 2, dans l'ordre. Un jeu de cartes est constitué uniquement de lettre majuscules entre A et M (sans espaces).
Sortie
Sur la première ligne, il faut indiquer « 1 », « 2 » ou « = » selon que le gagnant est le premier ou le second joueur, ou bien qu’il y a égalité complète.
Sur la seconde ligne, il faut indiquer le nombre d’égalités qui ont eu lieu avant que le jeu ne se termine.
De nombreuses confusions dans ton algorithme. De la ligne 7 à 17, tout est plus ou moins inutile. Ligne 20-21 : idem, la condition ne dépend pas de x.
Par contre, il est pertinent d'utiliser le minimum des longueurs. Voici comment je reprendrais ton code :
joueurUn = input()
joueurDeux = input()
carteMinimum = min(len(joueurUn), len(joueurDeux))
for x in range(carteMinimum):
if joueurUn[x] != joueurDeux[x]:
break
Autrement dit tu parcours les deux listes jusqu'à ce que cela diffère, à moins que cela ne diffère jamais (si on ne break pas)
Et ensuite, sans boucle, tu testes juste si joueurUn[x] != joueurDeux[x].
Si oui, x est un indice valide, à tous les indices précédents, les valeurs sont égales donc tu sais ce qu'il faut afficher (il y a deux cas).
Si non, cela veut dire qu'on a épuisé une des deux listes et tu as alors trois cas.
Merci pour ces conseils j'ai reussi en commencant par ton code
PascalOrtiz a écrit:
Par contre, il est pertinent d'utiliser le minimum des longueurs. Voici comment je reprendrais ton code :
joueurUn = input()
joueurDeux = input()
carteMinimum = min(len(joueurUn), len(joueurDeux))
for x in range(carteMinimum):
if joueurUn[x] != joueurDeux[x]:
break
Et c'est un déterrage. Le forum ne donne plus les dates d'inscription et de dernier accès dans le profil. Ça pouvait aider pour savoir si les intervenants étaient encore actifs.
Le Tout est souvent plus grand que la somme de ses parties.
France IOI problème La bataille
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Découverte Python Doc Tkinter Les chaînes de caractères
Le Tout est souvent plus grand que la somme de ses parties.