首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prolog four of a kind扑克

Prolog four of a kind扑克
EN

Stack Overflow用户
提问于 2012-08-06 05:43:28
回答 1查看 343关注 0票数 1

我正在尝试用Prolog编写一个扑克游戏。我知道如何编写皇家同花顺的代码,但我的四个一类的代码不工作。

我有以下代码:

代码语言:javascript
复制
four_of_a_kind(R):-
member(card(V, T1), R),
member(card(V, T2), R),
member(card(V, T3), R),
member(card(V, T4), R).

其中V是我想要保持相同的排名,T1,T2,T3,T4是套装。R是我的卡片列表。

谁能解释一下如何在prolog中编写这四种类型的代码,并解释一下我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-06 06:06:09

你的问题是,你一直在搜索整个手部 T1,T2..都是自由变量,所以

代码语言:javascript
复制
member(card(V, T1), R),
...

与同一张卡合并4次,four_of_a_kind总是返回true。

解决方案:只需锁住西装。

代码:

代码语言:javascript
复制
is_card(X,Y) :-
    number(X), between(1,13,X),
    member(Y, [c,d,h,s]). /* clubs, diamonds, hearts and spades */

four_of_a_kind(R) :-
    member(card(V,c), R),
    member(card(V,d), R),
    member(card(V,h), R),
    member(card(V,s), R), !.

一些疑问:

代码语言:javascript
复制
?- four_of_a_kind([card(7,c), card(7,d), card(7,h), card(9,s), card(7,s)]).
true.

?- four_of_a_kind([card(7,c), card(7,d), card(9,h), card(9,s), card(7,s)]).
false.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11820309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档