gpt4 book ai didi

prolog - Prolog 中的卡片表示

转载 作者:行者123 更新时间:2023-12-04 16:49:17 25 4
gpt4 key购买 nike

我正在尝试学习 Prolog。这是我使用这种语言的第一步。作为练习,我想编写可以识别一些扑克手牌的程序(同花顺、同花顺、满屋等)。

我正在 Prolog 中寻找良好的卡片表示。我需要有可能检查一张卡片是否比其他卡片大,卡片是否适合等等。

我从代码开始:

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.

这让我有可能检查等级 A 是否大于例如 J。

但我不确定如何表示单卡。此表示应包含牌的等级和花色。 Ace 也有一些问题,因为 Ace 有 14 级,但它也可以是 1 连胜。

所以我的问题是如果我想制定以下规则,如何表示卡片:
isStraight(C1, C2, C3, C4, C5) :- 
[...]

或者
isStraightFlush(C1, C2, C3, C4, C5) :- 
[...]

如果您了解语言,我敢肯定这是一个简单的问题,但是从 C 或 Python 等语言“转换”思维并不容易。 :-)

最佳答案

您可以使用 unicode 和 SWI 来制作漂亮的程序...

:- op(200, xf, ♥).
:- op(200, xf, ♦).
:- op(200, xf, ♣).
:- op(200, xf, ♠).
:- op(200, xf, ♡).
:- op(200, xf, ♢).
:- op(200, xf, ♧).
:- op(200, xf, ♤).

main :- print([2♠,3♦,'K'♥,10♠,3♣]),
isFlush(2♠,3♦,'K'♥,10♠,3♣).

isFlush(♥(_),♥(_),♥(_),♥(_),♥(_)).
isFlush(♦(_),♦(_),♦(_),♦(_),♦(_)).
isFlush(♣(_),♣(_),♣(_),♣(_),♣(_)).
isFlush(♠(_),♠(_),♠(_),♠(_),♠(_)).

关于prolog - Prolog 中的卡片表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4673076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com