我试图在prolog中编写一个程序,其中列表可能如下所示:
threeInRow(x,[b, b, a, threeInRow(x,[b, d, a,
c, a, b, c, d, b,
a, d, d]) b, d, a])
这两个都会返回true。该列表总是包含9个元素,可以是a-d中的任何字符。
threeInRow(x,[b, b, j
c, j, b,
j, d, d])
然而,会返回false,因为它不是a-d中的字符。
答案 0 :(得分:1)
如果您只想验证列表的长度(9)和允许的元素:
item_allowed(Item) :-
member(Item, [a, b, c, d]).
threeInRow(List) :-
length(List, 9),
maplist(item_allowed, List).