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 :

poker en caml


Sujet :

Caml

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 27
    Points : 11
    Points
    11
    Par défaut poker en caml
    Bonjour je dois faire cet exo. J'ai réussi à faire les deux premières questions mais après je n'y arrive plus. Je vous mets ce que j'ai fait. Si vous pouvez m'aider pour la suite ça serait sympa. Merci beaucoup

    On considère un jeu de 54 cartes et on définit le type carte de la façon suivante :
    type carte = Joker | Pique of int | Coeur of int | Carreau of int | Trefle of int;;
    Les cartes sont codées par leur valeur faciale, avec pour convention pour les «figures» les
    correspondances suivantes :

    A tout Valet on fait correspondre la valeur 11
    A toute Dame on fait correspondre la valeur 12
    A tout Roi on fait correspondre la valeur 13
    Exemple : Dame de Coeur est représentée par Coeur 12
    .
    1. Écrire une fonction joker de profil carte list -> int qui compte le nombre de cartes joker
    présentes dans la liste de cartes.

    2. Écrire une fonction separe de profil
    carte list -> carte list * carte list * carte list * carte list qui sépare
    une liste de cartes en la liste des cartes à coeur, pique, carreau, et trèfle respectivement.

    3. Écrire une fonction valide de profil carte list -> bool qui détermine si la liste de cartes
    donnée en entrée correspond à un paquet de 54 cartes complet.

    4. Donner une fonction suite de profil carte list -> bool testant si la liste de cartes donnée en
    argument est une longue suite (5 cartes de même «couleur» et de valeur successives). On supposera
    pour simplifier que si la liste de cartes donnée en argument est une telle suite, alors elle est donnée
    par ordre croissant de valeur faciale. Techniquement au poker on appelle cette combinaison une
    «quinte flush».
    Donner un exemple d’une telle suite en Ocaml.

    5. Écrire une fonction distribue de profil
    carte list -> int -> carte list list * carte list qui distribue 5 cartes, une par
    une, à chaque joueur dans l’ordre où elles apparaissent dans le tas de cartes donné en argument (et
    retourne aussi le tas de cartes restantes). Par exemple distribue paquet 2 enlève les 10 premières
    cartes du tas de cartes paquet , construit deux listes de 5 cartes contenant les cartes de chacun des
    deux joueurs, et retourne un couple constitué de la liste de ces deux donnes de 5 cartes et de la liste
    des cartes restantes.

    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # let rec joker l = match l with
    []->0
      | t::q -> if (t=Joker)then 1 + (joker q) else (joker q);;
        val joker : carte list -> int = <fun>
    2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #let rec separe l = match l with 
    []->([],[],[],[])
      |t::q -> let(pi,ca,co,tr)= separe q in
    match t with
    Joker ->(pi,ca,co,tr)
      |Pique  v -> (t::pi,co,ca,tr)
      |Coeur v -> (pi,t::co,ca,tr)
      |Carreau v -> (pi,co,t::ca,tr)
      |Trefle v-> (pi,co,ca,t::tr);;
    val separe : carte list -> carte list * carte list * carte list * carte list =
      <fun>
    3)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #let rec compte_occur x l = match l with
    []->0
      |t::q-> if t=x then 1 + compte_occur x q else compte_occur x q;;
        val compte_occur : 'a -> 'a list -> int = <fun>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #let get_val c = match c with
    Joker ->0
      |Pique v->v
      |Coeur v->v
      |Carreau v->v
      |Trefle v->v;;
              val get_val : carte -> int = <fun>

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par alix30002000 Voir le message
    Bonjour je dois faire cet exo. J'ai réussi à faire les deux premières questions mais après je n'y arrive plus. Je vous mets ce que j'ai fait. Si vous pouvez m'aider pour la suite ça serait sympa. Merci beaucoup[...]
    N'aurait il pas été approprié de poster dans le sujet pertinent qui parle déjà de Poker ?


    Ça veut dire quoi tu n'y arrives plus ? Tu as bien rédigé des algorithmes, pensé à des trucs, fait quelque essai ? Dis où ça bloque précisement, tu auras de l'aide.

    Petite remarque préalable : écris ton code correctement car là ce n'est pas terrible, mets des variables qui ont des noms explicites, idem pour les noms de fonctions « joker » ce n'est pas un nom de fonction acceptable.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    On me dit d'appeler cette fonction joker donc je l'appelle joker. Je respecte l'énoncé. La fonction valide je n'arrive pas à la faire. Merci de m'aider

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par alix30002000 Voir le message
    On me dit d'appeler cette fonction joker donc je l'appelle joker. Je respecte l'énoncé. La fonction valide je n'arrive pas à la faire. Merci de m'aider
    Bon bin alors c'est ton prof qui n'est pas génial..

    Restes les autres éléments de mon message
    1) Il y avait déjà un sujet traitant du point
    2) Ton code est mal présenté, ce qui fait que je ne l'ai pas lu... me dis pas que ton prof t'as obligé à sauter des lignes ET à utiliser des noms de variables comme « v » ! Je ne te croirais pas. De même pour les fonctions compte_occur ou get_val.... fais un effort, ça te sera bénéfique pour retrouver tes erreurs.
    3) Qu'est ce que tu as fait qui ne marche pas ? quel est ton algorithme ? Le but du forum n'est pas de te donner des solutions mais de t'aider à avancer dans ce que TU fais. Donc dis nous pourquoi ça te pose un problème ? Par exemple, commence par nous dire ton idée première et pourquoi tu n'as pas réussi à l'implémenter.

Discussions similaires

  1. Un jeu de poker en caml
    Par funtix dans le forum Caml
    Réponses: 35
    Dernier message: 01/12/2007, 17h00
  2. [CAML] Recherche aide pour un projet
    Par tarzoon dans le forum Caml
    Réponses: 1
    Dernier message: 02/09/2005, 10h32
  3. Pascal et Caml
    Par LUCET dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 24/01/2005, 07h39
  4. [CAML] domaine(s) d'utililsation
    Par airseb dans le forum Caml
    Réponses: 11
    Dernier message: 09/01/2005, 00h32
  5. algo et caml
    Par rabi dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 08/11/2002, 22h44

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