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

Haskell Discussion :

Construire une liste [0,1,1,2,2,2,3,3,3,3,n fois valeur n-1, avec valeur maximum 150


Sujet :

Haskell

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 113
    Points : 64
    Points
    64
    Par défaut Construire une liste [0,1,1,2,2,2,3,3,3,3,n fois valeur n-1, avec valeur maximum 150
    Bonjour , la question est dans le titre, je n'y arrive pas.
    Ca doit être simple ?
    Mettez-moi sur la voie svp.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 190
    Points : 219
    Points
    219
    Par défaut
    Salut,

    je débute mon apprentissage de Haskell donc ma solution n'est sans doute pas la meilleure mais elle a l'air de fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vasilpapa :: Int -> [Int]
    vasilpapa n = concat $ zipWith replicate [1..n] [0..(n+1)]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    *Main> vasilpapa 10
    [0,1,1,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,8,8,8,8
    ,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9]

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 113
    Points : 64
    Points
    64
    Par défaut
    Parfait, merci.

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Eh bien pour qqn qui débute en Haskell tu te débrouilles bien!!

    Je propose une légère amélioration, qui repose sur le fait que, alors que les fonctions sont recalculées à chaque fois qu'elles sont appelées, les structures de données sont automatiquement mémorisées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    vasilist = [ x | x <- concat $ zipWith replicate [1..] [0..] ] ;; une list comprehension infinie définissant la suite demandée
    vasilpapa n = take m vasilist
        where m = n*(n+1) `div` 2 ;; somme de la suite arithmétique 1+2+3+...+n
    Donc pour les 9 premiers chiffres, soit [0..8], vasilpapa 9. Si ensuite on a besoin de vasilpapa 15, vasilpapa 9 a déjà été calculé et mémorisé.

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Attention toutefois aux fuites mémoires si tu utilises cette définition dans un programme censé tourner longtemps. Ta liste en compréhension n'est pas nécessaire ici car : "[ x | x <- truc ]" est toujours équivalent à juste "truc".

    --
    Jedaï

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 113
    Points : 64
    Points
    64
    Par défaut
    Merci à tous.
    En regardant les réponse je viens de constater que je suis le seul (presque) a poser des question sur le forum Haskelll. A croire que je suis le seul à avoir des problèmes d'apprentissage.?

  7. #7
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Je pense que tu as quelques débutants Haskell en France qui ont besoin d'aide (même si OCaml a plus la cote ici puisque c'est un produit franco-français, plus ou moins) mais ils sont soit encadrés dans une université et posent les questions localement, soit suffisamment anglophones pour aller chercher les réponses sur StackOverflow, #haskell sur Freenode ou les boîtes emails haskell-beginners ou haskell-cafe. Ça explique probablement en partie le peu d'activité sur ce forum.

    --
    Jedaï

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 10/05/2010, 21h59
  2. [MySQL] Construire une liste avec les résultat d'une requête
    Par Requiem11 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/04/2009, 23h18
  3. [SimpleXML] Construire une liste de villes
    Par karpediem dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/03/2009, 23h03
  4. Réponses: 2
    Dernier message: 04/01/2008, 09h24
  5. Construire une liste de sélection avec 2 tables
    Par domdas dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/08/2006, 14h15

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