Inscription / Connexion Nouveau Sujet
Niveau Maths sup
Partager :

Suite de Syracuse en Python

Posté par
JulienDu86
18-10-14 à 16:06

Bonjour,


Je dois écrire une fonction Syracuse(u0,n) renvoyant la valeur de un si u est la suite de Syracuse de premier terme u0.
On doit partir sur le plan d'écriture suivant:

def Syracuse(u0,n):
    U = ...
    for ... ... ...
        .......
    return (U)


Pour l'instant, j'ai fait ça, mais je n'arrive pas à finir d'écrire la fonction:

def Syracuse(u0,n):
    U = u0
    for ...
        if n%2 == 0:
            U = U/2
        elif n%2 == 1:
            U = 3*U + 1
    return U


Merci d'avance pour votre aide !

Posté par
LeDino
re : Suite de Syracuse en Python 18-10-14 à 16:21

Commence par rappeler ce qu'est une suite de Syracuse.
Tu auras plus facilement de l'aide...
... Et les futurs lecteurs du post sauront de quoi on parle.

Posté par
JulienDu86
re : Suite de Syracuse en Python 18-10-14 à 16:29

Il me semble que c'est assez clairement dit dans le titre...

Posté par
LeDino
re : Suite de Syracuse en Python 18-10-14 à 16:49

Dans le titre il y a écrit "suite de Syracuse".
Ce qui ne constitue pas une définition.
J'ai pris soin de t'expliquer pourquoi il était plus conforme aux usages du forum de préciser cette définition.
Si tu ne veux pas respecter ces usages libre à toi... mais ne t'attends pas forcément à recevoir toute l'aide que tu espères.

C'est toi qui vois...

Posté par
LeDino
re : Suite de Syracuse en Python 18-10-14 à 16:59

La définition qui t'a été donnée permettra peut-être de préciser par exemple ce qui se produit lorsque U atteint la valeur 1...
Selon certaines définitions, la suite est alors stationnaire à 1.
Mais ton programme semble plutôt créer un cycle  1 4 2 1 4 2 1 ...

Par ailleurs, à en juger ce que tu as écrit pour l'instant... tu as VRAIMENT besoin d'aide...

Posté par
JulienDu86
re : Suite de Syracuse en Python 18-10-14 à 17:00

Ah oui d'accord, je n'avais pas saisi que vous entendiez de donner une définition propre de ce qu'est une suite de Syracuse.

Mais c'est bon, j'ai réussi à trouver...

Posté par
LeDino
re : Suite de Syracuse en Python 18-10-14 à 18:02

Citation :
Ah oui d'accord, je n'avais pas saisi que vous entendiez de donner une définition propre de ce qu'est une suite de Syracuse.

Je me demande bien ce que tu avais compris de ma question dans ce cas ...

Bref...

Posté par
JulienDu86
re : Suite de Syracuse en Python 18-10-14 à 18:09

La preuve que non, j'ai réussi sans aide...
En tout cas pas grâce celle que vous m'avez apporté
Bref on s'écarte du sujet.

Posté par
LeDino
re : Suite de Syracuse en Python 19-10-14 à 00:47

Citation :
La preuve que non

La preuve de quoi ?
Je t'ai posé une question, je n'ai rien affirmé.


"Passer pour un idiot aux yeux d'un imbécile est un plaisir de fin gourmet".
-- Sacha Guitry

Posté par
JulienDu86
re : Suite de Syracuse en Python 19-10-14 à 01:25

Je ne sais pas ce que vous chercher en vous comportant de la sorte, mais sachez que votre tenue est loin de l'esprit de ce forum d'entraide.
Je tiens le sujet pour clos, personne n'a à gagner de ce genre de remarques désobligeantes que vous vous permettez

Posté par
LeDino
re : Suite de Syracuse en Python 19-10-14 à 02:00

Tu ne lis même pas ce qu'on t'écris, et tu réponds n'importe quoi.
Si tu relis attentivement ce que j'ai écrit et ce que tu as répondu, en prenant la peine et le temps de comprendre, tu seras édifié par l'indigence de tes réponses. Je n'ose espérer que tu prennes également la mesure de ton insolence, totalement déplacée à l'égard de quelqu'un venu t'aider de bonne foi.

Mais je suis d'accord pour ne pas poursuivre un échange que je sais d'avance stérile, je ne pense pas que tu sois équipé ni motivé pour faire la démarche nécessaire pour comprendre ce qui s'est passé.

Posté par
arima
re : Suite de Syracuse en Python 19-10-14 à 04:28

Heureusement qu'il y a des demandeurs d'aide qui sont plus reconnaissants et sympathiques ...
Pas souvent motivant d'être confronté à des demandeurs agressifs de la sorte

Posté par
LeDino
re : Suite de Syracuse en Python 19-10-14 à 13:09

Bonjour arima,

Je pense que Julien a simplement lu trop vite ce que j'ai écrit.
Au lieu de "Commence par rappeler ce qu'est une suite de Syracuse"...
... je pense qu'il a lu : "Commence par rappeler que c'est une suite de Syracuse"

Cette première confusion a amené sa réponse lapidaire...
... et mes explications.

Puis quand je l'ai questionné sur ce qu'il avait compris :
"Je me demande bien CE QUE tu avais compris ..."
Il a dû l'interpréter comme :
"Je me demande bien SI tu avais compris ..."
Deuxième confusion de sa part, et l'échange qui part définitivement en sucette...

Trop pressé.
Et pas de recul pour se dire à un moment donné : "qu'est-ce qu'il a voulu dire au juste"... pour au moins essayer de comprendre !

Les aidants ne demandent pas forcément de reconnaissance, surtout lorsqu'ils n'ont pas eu l'occasion d'apporter de l'aide ... Mais au moins ne pas se faire prendre pour une nouille par un pur consommateur sans aucun savoir vivre.

La seule bonne nouvelle, c'est qu'il ait trouvé la réponse à son problème.

Merci pour ton clin d'œil de soutien en tout cas !

Posté par
LeDino
re : Suite de Syracuse en Python 19-10-14 à 14:22

Pour conclure ce topic sur une note plus optimiste, voici la correction de l'exercice.

La définition retenue ici c'est qu'une suite de Syracuse est initialisée à un nombre U0 entier positif quelconque, puis à chaque itération on coupe en deux le nombre s'il est pair, ou on le triple et on lui ajoute 1 dans le cas contraire.

Une conjecture fameuse (non encore démontrée) dit que l'altitude (hauteur maximale de la suite) et la longueur du "vol" opéré par la suite, sont finies. Autrement dit, il suffit d'un nombre fini d'itérations pour que la suite atterrisse immanquablement sur la valeur 1, puis se stabilise sur son "cycle trivial"  1 4 2 1 4 2 1 ... seul cycle qui lui soit connu à ce jour (sinon la conjecture serait démentie).


def Syracuse(u,n) :
    for i in range(1,n+1):      # Attention: i varie de 1 à n
        if u%2 == 0: u = u/2    # si u est pair on le divise par 2
        else: u = 3*u + 1       # sinon : triple + 1
    return u


Et pour tester la fonction :

# Test de la fonction :
for i in range(0,10): print i, ": ", Syracuse(1,i)
for i in range(0,10): print i, ": ", Syracuse(5,i)
for i in range(0,16): print i, ": ", Syracuse(17,i)



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1719 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !