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

Calcul scientifique Python Discussion :

hauteur d'une pyramide


Sujet :

Calcul scientifique Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Points : 6
    Points
    6
    Par défaut hauteur d'une pyramide
    Bonjour,

    j'ai repris avec python et là je suis des cours en ligne pour une certification PCAP, mais j'ai un exercice qui me complique un peu, je sollicite votre aide svp!

    je dois ecrire un programme qui doit calculer la hauteur d'une pyramide en fonction d'un nombre des blocs donner aléatoirement, soit blocks = input("entrer un nombre des blocks: "). chaque ligne inférieure a un block de plus que celle qui vient après, et la hauteur est calculée lorsque chaque ligne est parfaitement rempli(c'est à dire les lignes inferieures comportent un block de plus que les lignes superieures). Si la règle n'est pas suivi, le programme s'arrête automatiquement.


    Merci pour votre aide.

    illustration de la pyramide: Nom : Annotation 2020-01-07 205115.png
Affichages : 2041
Taille : 6,6 Ko

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut


    Ma solution est assez simple, quelques lignes de codes ! Mais c'est vous qui devez résoudre l'exercice.

    Prenez une feuille de papier et un crayon et pensez qu'au nombre N (nombre de briques au départ) on retire k pierres à chaque rangée. La seule difficulté c'est que la valeur de k change à chaque rangée.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Est-ce que c'est de la triche d'utiliser la somme d'une suite arithmétique?
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par MasterCisco Voir le message
    chaque ligne inférieure a un block de plus que celle qui vient après, et la hauteur est calculée lorsque chaque ligne est parfaitement rempli(c'est à dire les lignes inferieures comportent un block de plus que les lignes superieures). Si la règle n'est pas suivi, le programme s'arrête automatiquement
    Le nombre de briques B doit s'écrire comme la somme de H entiers consécutifs (H étant la hauteur recherchée).
    Ce qui revient à chercher m et n tels que:
    B soit la somme des entiers de l'intervalle [m, n], ou
    2*B = n * (n + 1) - m * (m - 1).
    Et s'ils existent H = n - m

    Exemples.
    • B = 6 s’écrit 3 + 2 + 1 => m, n = 0, 3 et H = 3 - 0 = 3
    • B = 5 s'écrit 3 + 2 => m, n = 1, 3 et H = 3 - 1 = 2
    • B = 4 s'écrit 4 => m, n = 3, 4 et H = 1


    La difficulté est "ok dans les cas où m = 0 i.e. s'il existe n tel que B s'écrive sous la forme des n premiers entiers positifs... j'ai la solution" mais, dans les autres cas où m > 0, voire est sans solution, c'est un plus compliqué.

    Mais vous avez de la chance: il y a la rubrique algo. et ses forums où poser la question.

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

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    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
    #! python3
    # coding: utf-8
     
    from termcolor import cprint
     
    def hauteur_pyramide(N):
        k = 1
        while True:
            N -= k
            cprint("Nombre d'éléments restant = {}, rang = {}".format(N, k), "green")
            if N - k - 1 >= 0:
                k += 1
            else:
                break
        cprint("Hauteur pyramide = {}".format(k), "green")
     
    for k in [3, 6, 10, 15, 21, 28, 29, 30, 31]:
        hauteur_pyramide(k)
    PS F:\test-python> & C:/Users/User/AppData/Local/Programs/Python/Python37-32/python.exe f:/test-python/Tests/forum_dvp/b_test.py
    Nombre d'éléments restant = 2, rang = 1
    Nombre d'éléments restant = 0, rang = 2 
    Hauteur pyramide = 2
    Nombre d'éléments restant = 5, rang = 1
    Nombre d'éléments restant = 3, rang = 2
    Nombre d'éléments restant = 0, rang = 3
    Hauteur pyramide = 3
    Nombre d'éléments restant = 9, rang = 1
    Nombre d'éléments restant = 7, rang = 2
    Nombre d'éléments restant = 4, rang = 3
    Nombre d'éléments restant = 0, rang = 4
    Hauteur pyramide = 4
    Nombre d'éléments restant = 14, rang = 1
    Nombre d'éléments restant = 12, rang = 2
    Nombre d'éléments restant = 9, rang = 3
    Nombre d'éléments restant = 5, rang = 4
    Nombre d'éléments restant = 0, rang = 5
    Hauteur pyramide = 5
    Nombre d'éléments restant = 20, rang = 1
    Nombre d'éléments restant = 18, rang = 2
    Nombre d'éléments restant = 15, rang = 3
    Nombre d'éléments restant = 11, rang = 4
    Nombre d'éléments restant = 6, rang = 5
    Nombre d'éléments restant = 0, rang = 6
    Hauteur pyramide = 6
    Nombre d'éléments restant = 27, rang = 1
    Nombre d'éléments restant = 25, rang = 2
    Nombre d'éléments restant = 22, rang = 3
    Nombre d'éléments restant = 18, rang = 4
    Nombre d'éléments restant = 13, rang = 5
    Nombre d'éléments restant = 7, rang = 6
    Nombre d'éléments restant = 0, rang = 7
    Hauteur pyramide = 7
    Nombre d'éléments restant = 28, rang = 1
    Nombre d'éléments restant = 26, rang = 2
    Nombre d'éléments restant = 23, rang = 3
    Nombre d'éléments restant = 19, rang = 4
    Nombre d'éléments restant = 14, rang = 5
    Nombre d'éléments restant = 8, rang = 6
    Nombre d'éléments restant = 1, rang = 7
    Hauteur pyramide = 7
    Nombre d'éléments restant = 29, rang = 1
    Nombre d'éléments restant = 27, rang = 2
    Nombre d'éléments restant = 24, rang = 3
    Nombre d'éléments restant = 20, rang = 4
    Nombre d'éléments restant = 15, rang = 5
    Nombre d'éléments restant = 9, rang = 6
    Nombre d'éléments restant = 2, rang = 7
    Hauteur pyramide = 7
    Nombre d'éléments restant = 30, rang = 1
    Nombre d'éléments restant = 28, rang = 2
    Nombre d'éléments restant = 25, rang = 3
    Nombre d'éléments restant = 21, rang = 4
    Nombre d'éléments restant = 16, rang = 5
    Nombre d'éléments restant = 10, rang = 6
    Nombre d'éléments restant = 3, rang = 7
    Hauteur pyramide = 7

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Ton code ne fonctionne pas pour les valeurs de k où il n'existe pas un entier n tel que k s'écrive comme la somme des entiers de 1 à n. Pire, il ne dit même pas qu'il retourne une erreur dans le cas contraire.

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

  7. #7
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Je ne comprends pas ta critique, il y a toutes les informations nécessaires sur la hauteur et le nombre d'éléments restants :

    . . .
    Nombre d'éléments restant = 3, rang = 7
    Hauteur pyramide = 7

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par danielhagnoul Voir le message
    Je ne comprends pas ta critique, il y a toutes les informations nécessaires sur la hauteur et le nombre d'éléments restants :

    . . .
    Nombre d'éléments restant = 3, rang = 7
    Hauteur pyramide = 7
    Il reste des briques à placer... soit le programme dit "je sais pas faire" (et dans cas on ne sort pas de hauteur), soit il trouve une solution avec un intervalle qui ne commence pas à 1 mais à un m tel que la somme des entiers de l'intervalle [m, n] soit égal au nombre de briques.

    Par exemple:
    29 s'écrit comme la somme des entiers de l'intervalle [14, 15], la hauteur est 2.
    30 s'écrit comme la somme des entiers de l'intervalle [4, 5, 6, 7, 8]: la hauteur est 5.
    31 s'écrit comme la somme des entiers de l'intervalle [15, 16]: la hauteur est 2.

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

  9. #9
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    L'énoncé n'a pas été forcément clair, mais moi ce que je comprend c'est que soit on a une pyramide parfaite, soit non, et dans ce cas il faut renvoyer une erreur. Je ne suis pas sûr donc qu'il faille considérer 29=15+14 soit une pyramide.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par lg_53 Voir le message
    L'énoncé n'a pas été forcément clair, mais moi ce que je comprend c'est que soit on a une pyramide parfaite, soit non, et dans ce cas il faut renvoyer une erreur. Je ne suis pas sûr donc qu'il faille considérer 29=15+14 soit une pyramide.
    Tout à fait, c'est pour cela que j'ai écrit: "soit le programme dit "je sais pas faire" (et dans cas on ne sort pas de hauteur), soit il trouve une solution qui...".
    Sûr que chercher m, n est un peu plus compliqué que de se contenter de vérifier qu'un nombre (de briques) s'écrit comme la somme de N premiers entiers.

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

  11. #11
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Avec un peu de calcul, j'aboutis à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import math
     
    def getHeight(S):
        h = (math.sqrt(1 + 8*S) - 1)/2
        h = int(h)
        return { 'hauteur': h, 'reste': int(S - h*(h+1)/2) }
     
    print(getHeight(7))
    Après on est libre d'afficher la hauteur ou pas.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    L'énoncé n'a pas été forcément clair, mais moi ce que je comprend c'est que soit on a une pyramide parfaite, soit non, et dans ce cas il faut renvoyer une erreur. Je ne suis pas sûr donc qu'il faille considérer 29=15+14 soit une pyramide.
    Bonsoir,

    Merci pour vos contribution. Pour l'énoncé, j'ai parfaitement repris tel qu'ecris dans l'exercice.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Nom : Annotation 2020-01-10 172505.png
Affichages : 2066
Taille : 66,5 Ko

    tel est l'enoncé de l'exercice!

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par MasterCisco Voir le message
    tel est l'enoncé de l'exercice!
    Certes mais la dernière ligne vous dit aussi "test your code using the data we've provided".
    Et vu ce que raconte la note juste avant, vous avez déjà 2 solutions.

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

  15. #15
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Calculer quelle est la pyramide constructible avec N blocs ou calculer quelle est la pyramide tronquée constructible avec N blocs avec la condition : on doit utilisé tous les blocs, ce n'est évidemment pas le même problème.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  16. #16
    Nouveau Candidat au Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2022
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2022
    Messages : 1
    Points : 1
    Points
    1
    Par défaut exo python
    essayez ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    blocks = int(input("Enter the number of blocks: "))
     
    height=1
     
    while True:
        blocks-=height
        if blocks-height-1>=0:
            height+=1
        else:
            break
    print("The height of the pyramid:", height)

Discussions similaires

  1. redimentionner la hauteur d'une input type="text"
    Par GroRelou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/04/2005, 10h32
  2. Changer la hauteur d'une ligne
    Par Oluha dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/02/2005, 16h26
  3. hauteur d une balise div en fonction de la résolution
    Par echecetmat dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/01/2005, 10h51
  4. [FRAME] Comment changer la hauteur d'une frame ?
    Par iubito dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/10/2004, 10h50
  5. [Memo] Hauteur d'une ligne
    Par Linkin dans le forum Composants VCL
    Réponses: 2
    Dernier message: 06/10/2004, 14h18

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