Comment trouver une suite de poker dans une liste
Résolu
Saens
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
Saens Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Saens Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis en train de coder un programme de poker et j'ai un soucis pour détecter si il y a une suite dans les 7 cartes disponibles.
J'utilise un fonction qui renvoie une liste avec que les valeurs numériques de la carte, exemple :
liste = [ 13, 1, 10,4,5,6,9] où 11 est la valet etc
Mais je n'arrive pas à detecter s'il y a une suite dans cette liste.
Voici ce que j'ai fait :
Je fais en sorte d'avoir une liste en ordre croissant et je supprime les doublons. Mais dans la boucle for, la variable suite ne prend pas que la valeur pour le dernier i du for. Par exemple, si la liste commence par une suite. pour i = 0, liste sera True mais avec i =3, liste sera False pourtant on a trouvé une suite plus tot.
Merci d'avance pour l'aide.
Je suis en train de coder un programme de poker et j'ai un soucis pour détecter si il y a une suite dans les 7 cartes disponibles.
J'utilise un fonction qui renvoie une liste avec que les valeurs numériques de la carte, exemple :
liste = [ 13, 1, 10,4,5,6,9] où 11 est la valet etc
Mais je n'arrive pas à detecter s'il y a une suite dans cette liste.
Voici ce que j'ai fait :
def supp_elem_recurr(lst): ''' delete les elements apparaisant + d'1 fois, lst est une liste en ordre croissant''' for u in range(len(lst)): if u < len(lst)-1: if lst[u] == lst[u+1]: del lst[u] return lst liste = [1,4,5,6,2,8,11] def est_suite(liste): liste.sort() liste = supp_elem_recurr(liste) if len(liste) < 5 : suite = False elif 1 in liste and 10 in liste and 11 in liste and 12 in liste and 13 in liste : suite = True else : # prend le "suite" que du dernier i --> pas correct for i in range(len(liste)-4): # mettre suite = False sinon if liste[i] == liste[i+1]-1 == liste[i+2]-2 == liste[i+3]-3 == liste[i+4]-4 : suite = True return suite
Je fais en sorte d'avoir une liste en ordre croissant et je supprime les doublons. Mais dans la boucle for, la variable suite ne prend pas que la valeur pour le dernier i du for. Par exemple, si la liste commence par une suite. pour i = 0, liste sera True mais avec i =3, liste sera False pourtant on a trouvé une suite plus tot.
Merci d'avance pour l'aide.
A voir également:
- Comment trouver une suite de poker dans une liste
- Liste déroulante excel - Guide
- Trouver adresse mac - Guide
- Comment trouver le mot de passe wifi sur son téléphone - Guide
- Comment trouver une adresse - Guide
- Comment trouver son adresse ip - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, pourquoi penses-tu que pour i=3 suite deviendra faux? à quelle ligne devient-il faux?
J'ai trouvé une solution :
def est_suite(table):
lis = liste_valeur(table)
lis.sort()
lis = supp_elem_recurr(lis)
suite_0 = False
suite_1 = False
suite_2 = False
if len(lis) < 5 :
suite = False
elif 1 in lis and 10 in lis and 11 in lis and 12 in lis and 13 in lis :
suite = True
else :
for i in range(len(lis)-4):
if lis[i] == lis[i+1]-1 == lis[i+2]-2 == lis[i+3]-3 == lis[i+4]-4 :
if i == 0:
suite_0 = True
elif i == 1:
suite_1 = True
elif i == 2:
suite_2 = True
if suite_0 or suite_1 or suite_2:
suite = True
else:
suite = False
return suite
table c'est les 7 couples de cartes recues.
liste_valeur() est une liste avec que les valeurs numériques des cartes (on retire les couleurs)
supp_elem_recurr(lis) supprime les doublons dans la liste
def est_suite(table):
lis = liste_valeur(table)
lis.sort()
lis = supp_elem_recurr(lis)
suite_0 = False
suite_1 = False
suite_2 = False
if len(lis) < 5 :
suite = False
elif 1 in lis and 10 in lis and 11 in lis and 12 in lis and 13 in lis :
suite = True
else :
for i in range(len(lis)-4):
if lis[i] == lis[i+1]-1 == lis[i+2]-2 == lis[i+3]-3 == lis[i+4]-4 :
if i == 0:
suite_0 = True
elif i == 1:
suite_1 = True
elif i == 2:
suite_2 = True
if suite_0 or suite_1 or suite_2:
suite = True
else:
suite = False
return suite
table c'est les 7 couples de cartes recues.
liste_valeur() est une liste avec que les valeurs numériques des cartes (on retire les couleurs)
supp_elem_recurr(lis) supprime les doublons dans la liste
else :
suite = False
avec le dernier if.
Imaginon que les 5 premieres cartes soient une suite et les 2 dernieres non. Mon programme va detecter la suite mais il va continuer de regarder plus loin. Et au final, il dira que suite = False , car la suite ne fait pas partie des 5 dernieres cartes