【问题标题】:Prolog, 3 in a row, any directionProlog,连续3个,任意方向
【发布时间】:2018-04-05 11:53:12
【问题描述】:

我正在尝试在 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 范围内的字符。

【问题讨论】:

  • 你应该展示你的代码和你面临的问题......

标签: prolog


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多