Prolog,连续3个,任何方向

时间:2018-04-05 11:53:12

标签: prolog

我试图在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中的字符。

1 个答案:

答案 0 :(得分:1)

如果您只想验证列表的长度(9)和允许的元素:

item_allowed(Item) :- 
    member(Item, [a, b, c, d]).

threeInRow(List) :-
    length(List, 9),
    maplist(item_allowed, List).