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 :

Ordre supérieur sur les multi-ensembles caml


Sujet :

Caml

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Ordre supérieur sur les multi-ensembles caml
    Bonjour ,
    dans le cadre d'un projet, je dois réaliser un rumnikub en caml.
    J'ai un problème , sur l'écriture d'une fonction d'ordre supérieur.
    Voici le sujet :
    http://www-verimag.imag.fr/~mounier/...jet1516_x2.pdf
    J'ai utilisé le typage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    type ’e melt = ’e * int
    type ’e mset = ’e melt list
    J'ai réalisé la fonction cardinal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     let rec  cardinal  (s:'e mset) = 
    	match s with 
      		| (a,nbocc)::r -> (nbocc+(cardinal r ))
      		| [] -> 0 ;;
    val cardinal : 'a mset -> int = <fun>
    Et la fonction cardinal d'ordre supérieur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    let incr_compteur cpt (_,z) = cpt + z;;
     
    let cardinal2 (l :'e mset) = List.fold_left incr_compteur 0 l ;;
    Et j'aurais besoin d'aide pour écrire la fonction subset d'ordre supérieur :
    Voici ma fonction subset :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let rec subset (s1:'e mset) (s2: 'e mset) = 
    	match s1 with  
      		| (a,nbocc)::r -> if ((nb_occurrences a s2) >= nbocc) then (subset r s2) else false
      		| [] -> true;;
    Merci pour votre attention,
    Cordialement,
    poupoules

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 87
    Points : 172
    Points
    172
    Par défaut
    Bonjour,

    Pour subset, devez-vous absolument utiliser List.fold_left ou pouvez-vous utiliser d'autres fonctions de la bibliothèque List ? Si tel est le cas, je vous invite à regarder la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List.for_all : ('a -> bool) -> 'a list -> bool
     
    for_all p [a1; ...; an] checks if all elements of the list satisfy the predicate p. That is, it returns (p a1) && (p a2) && ... && (p an).

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour ,
    J'ai regarder cette fonction mais je crois qu'en faite je me suis un embeter et je l'ai moi même codé : j'ai réussi à faire quelque chose qui marche mais je ne suis pas sure que se soit bien de l'ordre supérieur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    let rec for_all_mset (f: 'a ->'a-> bool)(l: 'e mset) (l2: 'e mset)=
    	match l with
       |[] -> true
       |(a,b)::r -> (f b (nb_occurrences a l2)) && (for_all_mset f r l2) ;;
     
    let inferieure a b =
    	a<=b;;
     
    let subset2 (l1: 'e mset) (l2: 'e mset) = for_all_mset inferieure l1 l2 ;;
    Merci de me dire ce que vous en pensez.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 87
    Points : 172
    Points
    172
    Par défaut
    Votre problématique a quand-même l'air très proche de celle de alexpand dans cette discussion : http://www.developpez.net/forums/d15...lti-ensembles/. Je vous invite à lire tout notre échange pour ne pas avoir à me répéter

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Après avoir lu et relu votre conversation avec alexpand , il est vrai que nos sujet semble similaire.
    Mais je reste toujours bloqué sur ma fonction sum...
    Je ne suis même pas sure que ma fonction subset2 soit bien de l'ordre de supérieur, j'ai du mal à comprendre le concept...
    Merci de votre aide.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 87
    Points : 172
    Points
    172
    Par défaut
    Quel concept ne comprenez-vous pas ? L'ordre supérieur ?

  7. #7
    Candidat au Club
    Femme Profil pro
    etudiant
    Inscrit en
    Avril 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Besoin d'aide pour un exercice Ocaml
    Bonjour, je suis dans le même cas pour l'exercice 7, c'est le même projet, pourriez vous m'aider? Je suis completement bloqué à cet exercice.
    Merci d'avance.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 87
    Points : 172
    Points
    172
    Par défaut
    Citation Envoyé par CB15487 Voir le message
    Bonjour, je suis dans le même cas pour l'exercice 7, c'est le même projet, pourriez vous m'aider? Je suis completement bloqué à cet exercice.
    Merci d'avance.
    Je ne sais pas ce que c'est que cet "exercice 7" et je n'ai pas envie d'aller sur le site de Verimag pour regarder. Je ne suis pas là pour faire vos devoirs mais pour vous aider sur des questions précises. Ecrivez-donc ce que vous avez déjà fait et là où vous bloquez.

    Cordialement

  9. #9
    Candidat au Club
    Femme Profil pro
    etudiant
    Inscrit en
    Avril 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par TchoubiTchoub Voir le message
    Je ne sais pas ce que c'est que cet "exercice 7" et je n'ai pas envie d'aller sur le site de Verimag pour regarder. Je ne suis pas là pour faire vos devoirs mais pour vous aider sur des questions précises. Ecrivez-donc ce que vous avez déjà fait et là où vous bloquez.

    Cordialement

    Voici l'exercice 7:
    Au début de la partie, chaque joueurs recoit 14 tuiles tirées au hasard dans le paquet initial.

    1. La fonction extraire : int -> pioche -> main * pioche, est définie de la façon suivante: l'appel (extraire n p) rend un couple (m, newp) dans lequel m est une main de n tuiles tirées au hasard dans p, et newp est la pioche p privée de ces n tuiles. On pourra utiliser la fonction getrandom de la section 2 pour implenter cette fonction.

    2. La fonction distribuer : pioche -> main * main * pioche, prend en paramètre la pioche initiale et rend les mains de chacun des deux joueurs et la pioche restante.

    3. La fonction initialiser : pioche -> etat, produit à partir du paquet initial l'état initial de la partie après distribution d'une main à chaque joueurs.

    Je ne vous demande pas de faire mon travail mais si vous pourriez me donner quelques aides cela m'aiderais beaucoup car je n'ai rien reussi à faire sur cet exercice. Cordialement.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 87
    Points : 172
    Points
    172
    Par défaut
    Vous ne pouvez pas "rien faire". Vous avez au moins une idée du pseudo-code qu'il y a derrière chaque question.

    Je vous assure qu'en écrivant déjà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let extraire n p = 
      let m = piocher_random_dans_p n p in
      let np = enlever_m_a_p p m in
      m, np
    Vous auriez une idée de ce qu'il reste à faire.

    Tant que je n'aurai pas une petite partie de code pour vous aider je ne le ferai pas.

  11. #11
    Candidat au Club
    Femme Profil pro
    etudiant
    Inscrit en
    Avril 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup pour votre aide, mais cela fait déjà une journée entiere que je bloque dessus et j'ai vraiment du mal avec ça mais merci quand même je vais essayer de ma debrouiller. Cordialement

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/12/2011, 20h33
  2. Question de débutant sur les Multi Layer Perceptrons ?
    Par faroukus dans le forum Méthodes prédictives
    Réponses: 3
    Dernier message: 26/08/2008, 13h43
  3. Question d'ordre général sur les macros sur excel
    Par tzehani dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 29/08/2007, 05h16
  4. [Portlet] Questions d'ordre général sur les portlets
    Par Chabin dans le forum Portails
    Réponses: 1
    Dernier message: 25/06/2007, 23h20
  5. Questions d'ordre general sur les design CSS
    Par Clorish dans le forum Mise en page CSS
    Réponses: 20
    Dernier message: 19/06/2007, 13h20

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