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 :

python problème des pigeons


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2015
    Messages : 151
    Points : 49
    Points
    49
    Par défaut python problème des pigeons
    Bonjour,

    Je veux écrire un algorithme en utilisant python pour afficher toutes les possibilités du problème des pigeons.

    Je détaille mieux.

    Prenant un Exemple:
    n=Nbre de pigeons
    k=Nbre de nids

    Supposons n=3, k=3.

    T=tableau de taille n (n=3). ça se peux une liste dans python

    Une solution :T=[1, 3, 2]
    Description:

    Le 1er pigeon est dans le 1er nid
    Le 2eme pigeon est dans le 3eme nid
    Le 3eme pigeon est dans le 2eme nid

    Et ça se peux un pigeon n'as pas de nid (valeur 0), par exemple T=[0, 3, 2] c'est une solution

    Le Nbre possible de solutions 4*4*4= 4 puissance(3)

    Preuve:
    le 1er pigeon à 4 possibilités :

    n'as pas de nid(0)
    dans le 1er nid(1)
    dans le 2eme nid(2)
    dans le 3eme nid(3)

    le 2eme pigeon à 4 possibilités ainsi le 3eme pigeon.

    Résultat=4 puissance(3)=64

    Je veux afficher les différentes résultats, les 64 résultats sous forme un algorithme en utilisant python.

    Merci d'avance.

  2. #2
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    C'est payé combien ?
    Pas d'aide par mp.

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    C'est très simple si on considère qu'il suffit d'écrire tous les nombres de 0 à 63 en les convertissant en nombres base 4 (changement de base de numération). On parle de base 4 puisque les nombres permis vont de 0 à 3. Il faut aussi ajouter autant de zéros qu'il faut à gauche pour obtenir 3 caractères.

    Exemples:
    0 (base 10) s'écrira 000 (base 4)
    34 (base 10) s'écrira 202 (base 4)
    24 (base 10) s'écrira 120 (base 4)
    63 (base 10) s'écrira 333 (base 4)

    Cette façon de voir permet d'ailleurs de généraliser facilement à un nombre quelconque de pigeons et de nids.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2015
    Messages : 151
    Points : 49
    Points
    49
    Par défaut Re
    Citation Envoyé par tyrtamos Voir le message
    Il faut aussi ajouter autant de zéros qu'il faut à gauche pour obtenir 3 caractères.
    Merci pour votre solution.

    J'ai fait ça :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    #-*- coding: utf-8 -*-
     
    #n= le nombre de pigeons 
    n=3
     
    #k= nombre de nids
    k=3
     
    cas_general=(k+1)**n
    print "le nombre de solutions possibles est egal à :", cas_general
     
    def base_k(n, k): 
        q = -1 
        res = '' 
        while q != 0: 
            q = n // (k+1)
            r = n % (k+1)
            res = `r` + res 
            n = q 
        return res
     
    for i in range(0, cas_general):
        print base_k(i, k)
    J'aimerai avoir comment ajouter autant de zéros qu'il faut à gauche pour obtenir 3 caractères.

    Merci d'avance.

  5. #5
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par hichem0550 Voir le message
    J'aimerai avoir comment ajouter autant de zéros qu'il faut à gauche pour obtenir 3 caractères.
    Il y a une méthode pour les chaines de caractères qui fait ça très bien: zfill().

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print("12".zfill(3))
    "012"
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2015
    Messages : 151
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Il y a une méthode pour les chaines de caractères qui fait ça très bien: zfill().

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print("12".zfill(3))
    "012"
    ça marche bien.

    Merci beaucoup tyrtamos

Discussions similaires

  1. approche objet en python...associer des classes.
    Par preacher_man dans le forum Général Python
    Réponses: 9
    Dernier message: 06/01/2006, 15h21
  2. Réponses: 1
    Dernier message: 01/11/2005, 12h04

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