首页 文章

Prolog - 创建谓词

提问于
浏览
-1

我试图在Prolog中创建的谓词(通过命令行通过断言等)在理论上相当简单 . 第一个是第二个(X,List),它检查X是否是指定列表的第二个元素 . 另一个被调用两次([list],X),其中在左参数中放置一个列表就像这样打印该列表:[a,b,c]变为[a,a,b,b,c,c]

另外,使用相同的谓词,但右边的参数而不是左边的参数应该产生如下结果:[a,a,b,b]变为[a,b]

我真的不知道如何去做其中任何一个 . 我得到的列表被表示为[head | tail]但我仍然感到困惑 . 我怎样才能制作这些谓词?

1 回答

  • 0

    提示两者:"Tail"是一个列表,因此您可以将列表分解为 [Head | [Second|Tail] ] .

    您可以使用此事实在一行中编写谓词 second(X, List) .

    提示 twice(List, X) 谓词:使用递归!

    • 基本情况:当"X"是单元素列表时"List"应该是什么?

    • 递归案例:将List分解为Head,Second和Tail1 . 将X分解为头部和尾部2 . 需要什么才能成为这些 Value 观之间的关系?确保在此递归调用两次 .

    要查看关系,请注意 twice([a,a,b,b], [a,b]) 应评估为true .

    在这种情况下, List = [a,a,b,b] ,所以 Head = aSecond = aTail1 = [b, b] .

    此外, X = [a,b] so Head = aTail2 = [b] . 所以我们需要检查的是两个头和第二个都是相等的,并且 twice(Tail1, Tail2) 是真的 .

相关问题