Prolog 序言四种扑克

Prolog 序言四种扑克,prolog,Prolog,我试图用Prolog编写一个扑克游戏。 我知道如何编写皇家同花顺的代码,但我的四个同类代码无法工作 我有以下代码: 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中编写这四个类似的代码,并解释一下我做错了

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

我有以下代码:

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中编写这四个类似的代码,并解释一下我做错了什么吗?

你的问题是你一直在搜索整只手和T1,T2。。都是自由变量,所以

member(card(V, T1), R),
...
用同一张卡统一4次,四种类型的值始终返回true

解决方案:只需锁上西装

代码:

一些疑问:

?- 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.

卡片
同时包含一个复合词和一个谓词是一个好主意吗?可能谓词应该称为
is_card/2
?- 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.