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

Scheme Discussion :

Suite de Syracuse


Sujet :

Scheme

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 27
    Points : 19
    Points
    19
    Par défaut Suite de Syracuse
    Désolé pour le post précédent, il s'agit bien de la suite dite de Syracuse et non de Césaro.

    Bonjour,

    je tente en vain de définir une fonction qui rend le n-iéme terme de cette suite définie par Un+1 = Un/2 si Un pair, et (3*Un)+1 si Un impair, à partir de Uo fixé.

    Je prends 2 variables n le rang du terme, et p le premier terme.
    Je ne parviens pas à construire la récurrence.
    Je pose
    if (= n 0)
    p
    J'ai fait des essais directs à partir de cette étape, j'ai également essayé de passer par une seconde condition sur n = 1 suivie de (even? p) p/2 sinon (3p)+1. mais je n'arrive pas à démarrer la récurrence.

    A votre avis, faut-il 2 variables?

    Merci par avance des idées qui pourraient débloquer ma réflexion.

    Cordialement.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 26
    Points
    26
    Par défaut
    Ce que je ferai de mon côté, c'est d'abord de créer une fonction qui prenant le Uo et rend une liste contenant tous les termes de la suite de Syracuse calculés. Et puis une seconde fonction, prenant comme argument la liste précédente et d'abord vérifiant si la liste a autant de termes de que celui qu'on demande et puis aller le chercher dans la liste.

    Je n'ai pas encore vraiment cherché à le faire en vrai mais voilà la manière dont je procéderai.

    EDIT : Voilà, j'ai mis en application mon idée. Je me pose juste une question. Est-ce que tu comptes tout faire toi-même ? En soit, cela serait un bon exercice mais de mon côté je n'ai pas eu le courage et j'ai employé des fonctions de la bibliothèque standard pour l'extraction du i-ème terme. Quoi que je viens de trouver une fonction qui le faisait directement.

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    So.Ta >> ton idée est tout à fait dans l'esprit du fonctionnel mais je pense qu' elle dépasse le niveau d'un débutant.
    Le plus simple à mon avis est une fonction a trois arguments (syracuse n v nmax) ou n est le numéro d'indice courant , nmax le numero d'indice désiré et v la valeur courante de la suite. On lance avec (syracuse 1 2011 100) par exemple.
    On peut ensuite réfléchir pour passer de 3 à seulement deux arguments.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 26
    Points
    26
    Par défaut
    Trap.D >> Cela fait longtemps que je n'avais pas fait de Scheme d'où peut-être un légère tendance à prendre un chemin plus compliqué[1] mais c'est vrai que la solution que tu proposes est plus facile à implémenter.

    Debinfo75 >> Si tu passes encore sur ce sujet, peux-tu nous dire où en es-tu de ton côté ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Merci à vous.

    Je reviens sur le sujet et y réfléchis de nouveau.
    Tardivement, en tout cas pas à la mesure de votre disponibilité.
    Je vous tiens au courant de ma progression.

    A nouveau merci.
    Cordialement.

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 96
    Points : 51
    Points
    51
    Par défaut
    Bonsoir,

    si j'ai bien compris, voila un une fonction qui rend le nieme terme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    (define (nieme-terme n u0)
       (let and-next ((terme0  u0)
                     (comp n))
         (cond ((zero? comp)    terme0)
               ((even? terme0) (and-next (/ terme0 2) (- comp 1))) 
               (else (and-next (+ (* 3 terme0) 1) (- comp 1))))))
    Cordialement
    E. Bazoga

Discussions similaires

  1. [Suite de Syracuse] Comment résoudre ce programme ?
    Par fredigston dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 04/02/2011, 10h48
  2. Suite de Syracuse
    Par Akhey dans le forum Pascal
    Réponses: 11
    Dernier message: 11/10/2009, 05h52
  3. suite de syracuse
    Par narcis60floyjo dans le forum C++
    Réponses: 23
    Dernier message: 23/11/2007, 01h53
  4. Réponses: 2
    Dernier message: 05/03/2003, 00h24
  5. Pb BDE suite a passage en Windows 2000 pro
    Par ARIF dans le forum Paradox
    Réponses: 4
    Dernier message: 18/11/2002, 12h39

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