IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

[débutant] Arrangement particulier en python pour un mini jeu


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2015
    Messages : 2
    Par défaut [débutant] Arrangement particulier en python pour un mini jeu
    Salut à tous,

    Voilà le contexte:

    Je fais partis d'une équipe de speedruner, qui aimerai finir un jeu le plus vite possible, dans ce jeu il y a un mini jeu, qui, s'il est réussi permet de gagner pas mal de sou, le truc c'est que ce mini-jeu est dure, voici comment ça fonctionne:

    • il y a 4 oiseaux
    • chaque oiseaux peu changer de couleur (pour le niveau 1&2 il y a deux couleurs (rose et bleu) pour le niveau 3 il y a trois couleurs (bleu, rose, jaune))
    • pour gagner le mini jeu il faut trouver une combinaison qui correspond à une combinaison choisit par le jeu.
    • après chaque essai, le jeu nous indique combien d'oiseaux sont de la bonne couleur mais par leur emplacement.


    le truc c'est qu'avec deux couleurs, il y a 4^2 (16) combinaisons possible, pour 3 couleurs: 4^3 (64) combinaisons à tester en moins d'1min30.

    c'est pourquoi j'aimerais savoir s'il:

    • Il y a possibilité de générer la liste de tous les arrangements possible (pour n couleur) ?
    • créer un utilitaire pour "trouver" une réponse rapide au mini jeu avec les infos que l'on récupère dans le mini jeu.
    • à défaut de trouver un protocole pour éliminer le plus de possibilités rapidement ?


    J'ai déjà chercher du coté du combinatoire et des arrangement en python, mais rien qui ne correspond à mon besoin.

    Merci pour l'aide que vous pourrez m'apporter.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 839
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par fallency Voir le message
    le truc c'est qu'avec deux couleurs, il y a 4^2 (16) combinaisons possible, pour 3 couleurs: 4^3 (64) combinaisons à tester en moins d'1min30.
    Avec deux couleurs il y a 2^4 (16) combinaisons possibles, pour 3 couleurs: 3^4 (81) combinaisons

    Citation Envoyé par fallency Voir le message
    Il y a possibilité de générer la liste de tous les arrangements possible (pour n couleur) ?
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import itertools
    import string
    tuple(itertools.product(string.ascii_uppercase[:n], repeat=4))
    Tu remplaces "n" par la valeur que tu veux.

    Citation Envoyé par fallency Voir le message
    à défaut de trouver un protocole pour éliminer le plus de possibilités rapidement ?
    Devant cette règle aussi stupide (même le mastermind te donne le nombre de pions bien placés), je ne vois guère que commencer par tous les pions de la même couleur, pour checker ainsi si la couleur est ou n'est pas.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import itertools
     
    # Génération des couleurs triées par nb de répétitions
    def genere(*coul):
    	yield from sorted(itertools.product(coul, repeat=4), key=lambda x: len(set(x)))
     
    for x in genere("bleu", "rouge", "jaune"): print(x, len(set(x)))
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2015
    Messages : 2
    Par défaut
    Salut, merci beaucoup pour ton aide, qui m'a bien fait avancer, j'aurais encore besoin de ton aide pour une chose, voilà mon code pour l'instant (basé sur le tien):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    import itertools
    a_list  = []
    # Génération des couleurs triées par nb de répétitions
    def genere(*coul):
    	yield from sorted(itertools.product(coul, repeat=4), key=lambda x: len(set(x)))
     
    for i in range(0, 4): 
      color = input("color ?:") #une des 3 couleurs en questions
      number_of_color = input("number ?:")#ce que nous dit le jeu; Ex: bleu 2/4
      for x in genere("blue", "red", "yellow"): 
          count = x.count(color) #on cherche combien d'itération d'une même couleur existe dans la ligne
          if (count == int(number_of_color)): #on affiche que les lignes qu'il nous faut
            print(x, len(set(x)))
    En gros ça me permet de fournir au programme une couleur et combien de fois elle revient, et le code filtre les résultats pour afficher que ceux qui m'intéressent.

    Le problème c'est que si je veux filtrer une deuxième fois parmi les résultats du premier filtre, ça ne marche puisque la liste est regénérée.

    J'aimerai donc savoir s'il serais possible de générer une fois la liste des combinaisons possibles puis de filtrer sans la regénérer à chaque fois?


    Merci

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    Citation Envoyé par fallency Voir le message
    J'aimerai donc savoir s'il serais possible de générer une fois la liste des combinaisons possibles puis de filtrer sans la regénérer à chaque fois?
    Au lieu d'afficher le résultat, on peut (aussi) le stocker dans une liste.... donc c'est possible.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fallency Voir le message
    Le problème c'est que si je veux filtrer une deuxième fois parmi les résultats du premier filtre, ça ne marche puisque la liste est regénérée.
    J'aimerai donc savoir s'il serais possible de générer une fois la liste des combinaisons possibles puis de filtrer sans la regénérer à chaque fois?
    Il serait bon que tu apprennes Python...

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Génération des couleurs triées par nb de répétitions
    def genere(*coul):
    	yield from sorted(itertools.product(coul, repeat=4), key=lambda x: len(set(x)))
     
    data=tuple(genere("bleu", "blanc", "rouge"))
    for x in data: print(x)
    for x in data: print(x)
    for x in data: print(x)
    for x in data: print(x)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Cours vidéo Python pour débutants
    Par Djug dans le forum Général Python
    Réponses: 22
    Dernier message: 17/08/2011, 09h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo