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 :

Nombre de facon d'écrire une somme


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Maroc
    Inscrit en
    Août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Maroc

    Informations professionnelles :
    Activité : Maroc
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2017
    Messages : 4
    Par défaut Nombre de facon d'écrire une somme
    Bonjour,

    SVP, je dois réaliser ce sujet :
    Ecrire une fonction nbsum qui prend comme argument un nombre n et qui renvoie le nombre de façons d'écrire une somme égale à n (on comptera une seule fois les commutations).


    Ayant beaucoup de mal avec la récursivité , et après plusieurs tentatives je m'adresse à vous.

    OU bien Ecrire une fct récursive partition(n,m) qui prend en entrée deux entiers positifs n et m , et rend le nombre de manières d'écrire n comme somme d'entiers supérieures ou égaux à m (sans ordre). par ex partition(6,2) rrendra 4 , car 6 peut s'écrire : 6,4+2, 3+3, 2+2+2

    Pourriez vous m'aider a trouver une methode permettant de réaliser cette fonction, et m'expliquer les différentes étapes ?

    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Par défaut
    Bonjour,

    Je propose ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # -*- coding: cp1252 -*-
    def NbSum(n):
        i=0 #On met i à 0
        while i<n: 
            diff=n-i #On fait la différence
            if diff>=i:#On affiche une fois les commutations
                print str(diff)+"+"+str(i) #On affiche
            i+=1#on incrémente
    ouaffichera

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Maroc
    Inscrit en
    Août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Maroc

    Informations professionnelles :
    Activité : Maroc
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2017
    Messages : 4
    Par défaut
    Mais il faut considérer la possibilité d’écrire 6 comme 2+2+2 , avec 3 nombres ,4,5...etc

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par IDAOUBAKRIMHASSAN Voir le message
    Pourriez vous m'aider a trouver une methode permettant de réaliser cette fonction, et m'expliquer les différentes étapes ?
    La première étape sera de définir/choisir un des algorithmes que vous allez trouver sur Internet ou dans le forum de la rubrique algorithmique. Sans çà, vous ne savez pas encore ce que vous voulez coder... Après, il va falloir traduire cela en Python et définir des jeux de tests qui permettront d'assurer que çà a été codé correctement.


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

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Bonjour,

    Ça ne répond pas à la question de la récursivité, mais comme je trouvais l'exercice intéressant, je m'y suis attelé à ma manière

    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
    from itertools import product
    def partition(n, m, k):
        count = 0
        numbers = list(map(str, range(m, n))
        for i in product(numbers, repeat=k):
            my_sum = sum(map(int, i))
            if my_sum == n:
                print('+'.join(i))
                count += 1
        return count
     
    MAX = 6
    MIN = 2
     
    possibilities = 0
    for i in range(MIN, MAX-MIN):
        possibilities += partition(MAX, MIN, i)
    print("Possibilités : {}".format(possibilities))
    Avec le module itertools et sa fonction product, ça rend les choses beaucoup plus simples...

    Plus simple sans l'affichage des opérations

    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
    def partition(n, m, k):
        count = 0
        numbers = range(m, n+1)
        for i in product(numbers, repeat=k):
            my_sum = sum(i)
            if my_sum == n:
                count += 1
        return count
     
    MAX = 6
    MIN = 2
     
    possibilities = 0
    for i in range(MIN, MAX-MIN):
        possibilities += partition(MAX, MIN, i)
    print("Possibilités : {}".format(possibilities))

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Maroc
    Inscrit en
    Août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Maroc

    Informations professionnelles :
    Activité : Maroc
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2017
    Messages : 4
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Bonjour,

    Ça ne répond pas à la question de la récursivité, mais comme je trouvais l'exercice intéressant, je m'y suis attelé à ma manière
    Merci beaucoup Monsieur Fred ,mais, Avez vous une solution pour éviter de calculer les mêmes manières deux fois comme 4+2 , 2+4 ?

    voici l'exercice

    Nom : python.jpg
Affichages : 1217
Taille : 28,0 Ko

    Merci d'avance

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Maroc
    Inscrit en
    Août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Maroc

    Informations professionnelles :
    Activité : Maroc
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2017
    Messages : 4
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    La première étape sera de définir/choisir un des algorithmes que vous allez trouver sur Internet ou dans le forum de la rubrique algorithmique. Sans çà, vous ne savez pas encore ce que vous voulez coder... Après, il va falloir traduire cela en Python et définir des jeux de tests qui permettront d'assurer que çà a été codé correctement.


    - W
    Salut , OK Merci beaucoup

Discussions similaires

  1. programme qui saisie une somme et qui donne le nombre de billet
    Par levasseur62 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 02/11/2010, 14h34
  2. [XL-2007] copier le résultat d'une somme de 2 nombres obtenus en changeant le filtre
    Par gabi75 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/05/2010, 14h17
  3. écrire une liste de nombres
    Par soiz775 dans le forum Langage
    Réponses: 18
    Dernier message: 22/01/2009, 14h36
  4. Nombre de facon d'écrire une somme : récursivité complexe
    Par Tidus159 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 07/12/2008, 21h06
  5. Réponses: 10
    Dernier message: 03/10/2006, 20h19

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