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

Caml Discussion :

aide pour un exercice sur les tableaux


Sujet :

Caml

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1
    Points : 4
    Points
    4
    Par défaut aide pour un exercice sur les tableaux
    Salut à tous,


    J'ai eu un problème et grace à vos réponses, je me tourne vers vous
    voila mon exercice:
    ecrire une fonction qui fait le tri croisant d'un tableau d'entiers.


    merci

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    penses à regarder la librairie standard
    http://caml.inria.fr/pub/docs/manual...ref/Array.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    gorgonite@GorgonMobile:~$ ledit | ocaml
            Objective Caml version 3.10.0
     
    # let a = [|5;2;3;4;1|];;
    val a : int array = [|5; 2; 3; 4; 1|]
    # Array.sort;;
    - : ('a -> 'a -> int) -> 'a array -> unit = <fun>
    # Array.sort (fun x y -> if x=y then 0 else if x<y then -1 else 1) a;;
    - : unit = ()
    # a;;
    - : int array = [|1; 2; 3; 4; 5|]

  3. #3
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 140
    Points : 84
    Points
    84
    Par défaut
    mimiif,


    Gorgonite t'a donné une solution appréciable à 2 égards au moins :

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    En fait, ce n'est pas tous les types. C'est "tout les types que le runtime sait plus ou moins ordonner à la hache". Ça veut dire que parfois, ça n'est pas ce que tu veux (par exemple si tu utilises ça sur des structures de données où l'égalité n'est pas l'égalité structurelle, comme certains arbres équilibrés, troubles incoming), et qu'il arrive même que ça ne marche pas du tout (sur les fonctions ou les valeurs paresseuses par exemple).

    Ça reste du détail, mais les opérateurs de comparaison polymorphes tiennent plus du hack que de la méthode sérieuse, et il faut éviter de reposer dessus si possible. C'est pratique dans certain cas, mais en général apporter sa propre fonction de comparaison avant le tri est une bien meilleure idée.

    Par ailleurs, on peut écrire ça bien plus concisément, avec la fonction "compare" :
    # let f t = Array.sort compare t;;
    val f : 'a array -> unit = <fun>

  5. #5
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par bluestorm Voir le message
    Ça reste du détail, mais les opérateurs de comparaison polymorphes tiennent plus du hack que de la méthode sérieuse, et il faut éviter de reposer dessus si possible.
    Euh... Je pense qu'il faut en comprendre les limites (quand il y a des fermetures ou des structures cycliques) et que ça ne va pas quand on veux mettre une sémantique sur l'ordre, mais dans plein de cas, c'est quand même génial !!

  6. #6
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    il est clair que compare ou ma version (qui est la même en compréhensible ) ont le défaut de nécessiter explicitement de manipuler la fonction comparaison pour les types trop complexes


    et c'est là que F# et IComparable sont appréciables... très appréciables quand tu veux faire une intersection de deux noeuds d'un CFG pour remonter au dominateur immédiat par exemple

  7. #7
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Je pense que ce que veut son prof, si c'est bien ça, c'est LA fonction qui trie les éléments d'un vecteur... et non utiliser celle de la librairie.

  8. #8
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par InOCamlWeTrust Voir le message
    Je pense que ce que veut son prof, si c'est bien ça, c'est LA fonction qui trie les éléments d'un vecteur... et non utiliser celle de la librairie.
    ben il n'a pas préciser...

    je donnais juste un exemple, je pense qu'il comprend désormais mieux comment structurer de manière générique et modulaire une telle fonction


    s'il veut, j'ai tout sorte de tri sur liste ou tableau codé en caml... style bulle, mergesort, quicksort et heapsort

  9. #9
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Citation Envoyé par gorgonite
    s'il veut, j'ai tout sorte de tri sur liste ou tableau codé en caml... style bulle, mergesort, quicksort et heapsort
    C'est bon, je sais d'où tu les sors ceux-là ! Moi aussi je les ai...

    Tu avais aussi pris la correction, ou juste les ennoncés ?

    P.S. : t'as oublié le FlashSort et le ShellSort (le seul qui vaille vraiment la peine pour de petits vecteurs) !

  10. #10
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par InOCamlWeTrust Voir le message
    C'est bon, je sais d'où tu les sors ceux-là ! Moi aussi je les ai...

    Tu avais aussi pris la correction, ou juste les ennoncés ?

    P.S. : t'as oublié le FlashSort et le ShellSort (le seul qui vaille vraiment la peine pour de petits vecteurs) !


    ceux-là étaient en camllight... les miens sont en OCaml, suite à la tentative de concours de perfs sur tes algo de tris pour des listes de Unsigned Long Long
    mais très clairement, je m'en suis inspiré pour certains

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 04/02/2008, 20h37
  2. [Tableaux] Aide pour un algorithme sur les tableaux
    Par sara21 dans le forum Langage
    Réponses: 7
    Dernier message: 20/05/2007, 10h28
  3. Exercice sur les tableaux
    Par IDE dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 06/11/2006, 19h33
  4. Réponses: 13
    Dernier message: 26/10/2006, 21h02
  5. Besoin d'aide pour un exercice sur les registres
    Par zakuza dans le forum Assembleur
    Réponses: 5
    Dernier message: 14/04/2006, 14h23

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