小编nun*_*b99的帖子

Prolog 程序能够找到三个连续和重复的值

正如标题所说,我需要编写一个程序,从列表中找到三个相等且连续的值,例如:

find([o,o,a,b,b,b,c,c], X)
X = [b,b,b].
Run Code Online (Sandbox Code Playgroud)

我的日常是函数式编程,但我对我的程序正在做的事情有些挣扎,因为它从不输出具体的结果(例如:输出X = [_7714,_7720,_7726])

我做的程序如下:

find(_List, X) :-
    length(X, Size),
    Size = 3,
    format('X = ~w', [X]).

find([Equal, Equal|Tail], X) :-
    is_list(X),
    append([Equal, Equal], X, Y),
    find([Equal|Tail], Y).

find([Equal, Equal|Tail], _X) :-
    append([Equal, Equal], [], Y),
    find([Equal|Tail], Y).

find([_Equal, Diferent|Tail], _X) :-
    find([Diferent|Tail], []).
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么或者我在序言理论中混淆了什么。对我来说,我的程序很有意义,我无法真正理解代码在每个步骤中的执行位置(即使使用trace.)。

任何帮助都非常感谢!提前致谢!

prolog

5
推荐指数
1
解决办法
67
查看次数

标签 统计

prolog ×1