J'essaie d'apprendre Prolog. Ce sont mes premiers pas avec cette langue. Comme exercice je veux écrire un programme qui peut reconnaître certaines mains de poker (Quinte flush, Four of a kind, Full house etc.).Représentation des cartes dans Prolog
Je cherche une bonne représentation de carte dans Prolog. Je dois avoir la possibilité de vérifier si une carte est plus grande que l'autre, si les cartes sont adaptées et ainsi de suite.
J'ai commencé avec le code:
rank(2).
rank(3).
rank(4).
rank(5).
rank(6).
rank(7).
rank(8).
rank(9).
rank(t).
rank(j).
rank(q).
rank(k).
rank(a).
value(2, 2).
value(3, 3).
value(4, 4).
value(5, 5).
value(6, 6).
value(7, 7).
value(8, 8).
value(9, 9).
value(t, 10).
value(j, 11).
value(q, 12).
value(k, 13).
value(a, 14).
%value(a, 1).
suite(d).
suite(h).
suite(c).
suite(s).
rank_bigger(X, Y) :-
value(X, A),
value(Y, B),
A > B.
Cela donne la possibilité mi vérifier si le rang A est plus grand que par exemple J.
Mais je ne sais pas comment représenter seule carte. Cette représentation devrait contenir le rang de carte et également costume. Il y a aussi un problème avec Ace parce que Ace a le rang 14 mais il peut aussi être 1 en straight.
Donc, ma question est de savoir comment représente les cartes si je veux faire des règles comme:
isStraight(C1, C2, C3, C4, C5) :-
[...]
ou
isStraightFlush(C1, C2, C3, C4, C5) :-
[...]
Je suis sûr que ce genre de question simple si vous connaissez la langue , mais il n'est pas si facile de «changer» de pensée à partir de langages comme C ou python. :-)
Merci pour votre réponse! Encore une fois, j'ai besoin de l'analyser. :) – Adam