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 :

La suite de Syracuse ou conjecture de Collaz


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut La suite de Syracuse ou conjecture de Collaz
    Bonsoir, je suis confronté a un problème épineux --", en tout cas difficile avec mes connaissances actuelles...
    Je travaille sur un programme dans lequel il m'est demandé d'écrire un programme permettant de donner le temps de vol, le temps de vol en altitude et l’altitude maximale...(mais tout cela avec une seule boucle)

    Pour ceux qui savent pas:
    La suite de Syracuse est une suite d'entiers naturels définie de la manière suivante : on part d'un nombre entier plus grand que zéro ; s’il est pair, on le divise par 2 ; s’il est impair, on le multiplie par 3 et on ajoute 1. En répétant l’opération, on obtient une suite d'entiers positifs dont chacun ne dépend que de son prédécesseur.(def wikipedia )
    Le temps de vol c'est le plus petit indice n tel que u(n) = 1.
    et le temps de vol en altitude c'est le plus petit indice n tel que un+1 ≤ u0.
    et l' altitude maximale la valeur maximale de la suite.

    Actuellement je suis capable seulement de calculer le temps de vol avec le programme suivant
    Images attachées Images attachées  

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [mise a jour] J'y suis parvenu
    Bon, j'y suis parvenu mais je respecte pas la consigne de une seule boucle... Voici mon travail

    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
    u=int(input("premier terme de la suite"))
    liste = []
    indice=0
    liste = liste + [u]
    ui=0
    tpsvolalt=0
    while u != 1 :
     
        if u%2 == 0 :
            u=u//2
            liste = liste + [u]
            indice = indice +1
     
        else :
            u=3*u+1
            liste = liste + [u]
            indice = indice +1
        while u>=ui :
            tpsvolalt=indice
            ui=u
    print("le temps de vol est ",int(indice))
    print("le temps de vol en altitude est ",int(tpsvolalt))
    print("le vol maximum est ",max(liste))

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    octobre 2011
    Messages
    1 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2011
    Messages : 1 999
    Points : 2 545
    Points
    2 545
    Par défaut
    Salut,

    Ce serait préférable de poster le code plutôt qu'une image...

    Cela nous éviterait d'avoir à le recopier si on voulait le tester...

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Ha oui pardon xd
    Citation Envoyé par Beginner. Voir le message
    Salut,

    Ce serait préférable de poster le code plutôt qu'une image...

    Cela nous éviterait d'avoir à le recopier si on voulait le tester...

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    2 651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 2 651
    Points : 5 797
    Points
    5 797
    Par défaut
    La ligne if u < ui and u == max(list)) est fausse. Il faudrait remplacer max() pas min() pour avoir un bon résultat.

    Et je ferais même un peu différement, je remplacerais cette ligne par if u < ui and tpsvolalt == 0Et pour que ça marche, j'ajouterais une ligne au tout début du programme tpsvolalt = 0 .

    PS : ton code n'est plus lisible, utilise la balise code pour que les indentations apparaissent. Et la balise code, c'est le bouton # sur la barre de boutons (ça ajoute {CODE} et {/CODE} avant et après la portion de code)
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    La ligne if u < ui and u == max(list)) est fausse. Il faudrait remplacer max() pas min() pour avoir un bon résultat.

    Et je ferais même un peu différement, je remplacerais cette ligne par if u < ui and tpsvolalt == 0Et pour que ça marche, j'ajouterais une ligne au tout début du programme tpsvolalt = 0 .

    PS : ton code n'est plus lisible, utilise la balise code pour que les indentations apparaissent. Et la balise code, c'est le bouton # sur la barre de boutons (ça ajoute {CODE} et {/CODE} avant et après la portion de code)
    Merci beaucoupppp!!!!!!! :3

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut réponse finale
    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
    25
    u=int(input("premier terme de la suite"))
    liste = []
    indice=0
    liste = liste + [u]
    ui=u
    tpsvolalt=0
    while u != 1 :
     
        if u%2 == 0 :
            u=u//2
            liste = liste + [u]
            indice = indice +1
     
        else :
            u=3*u+1
            liste = liste + [u]
            indice = indice +1
        if ui==1:
            tpsvolalt=0
        elif u<ui and tpsvolalt==0 :
            tpsvolalt=indice-1
     
    print("le temps de vol est ",int(indice))
    print("le temps de vol en altitude est ",int(tpsvolalt))
    print("le vol maximum est ",max(liste))
    j'avais oublié de prendre en compte le un+1 et le cas particulier de 1 en lien avec ma modif

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 3.X] Suite de syracuse et graphe
    Par swiftstell dans le forum Général Python
    Réponses: 0
    Dernier message: 29/10/2015, 13h13
  2. Suite de Syracuse
    Par Debinfo75 dans le forum Scheme
    Réponses: 5
    Dernier message: 22/07/2011, 00h02
  3. [Suite de Syracuse] Comment résoudre ce programme ?
    Par fredigston dans le forum Débuter
    Réponses: 9
    Dernier message: 04/02/2011, 10h48
  4. Suite de Syracuse
    Par Akhey dans le forum Pascal
    Réponses: 11
    Dernier message: 11/10/2009, 05h52
  5. suite de syracuse
    Par narcis60floyjo dans le forum C++
    Réponses: 23
    Dernier message: 23/11/2007, 01h53

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