我需要一些关于检查和操作列表的三个 prolog 谓词的帮助。我是 prolog 的新手,任何帮助将不胜感激。
三个谓词是:
double_up(+List1, -List2)
List2
当每个元素为List1
两次时为真。查询double_up([a,b,c],X)
应该给出X=[a,a,b,b,c,c]
. 输出列表中元素的顺序无关紧要。pivot(+List1, +Pivot, -Smaller, -GreaterEq)
当Smaller
是List1
小于的数字列表Pivot
并且GreaterEq
是List1
大于或等于的数字列表时为真Pivot
。fancy_replace(+List, +Takeout,+Putin, -NewList, -Count)
NewList
当与输入相同的列表时为真List
,但列表中的每个Takeout
元素都被替换为Putin
元素。Count 应该是被替换的 Takeouts 的数量。例如,查询fancy_replace([9,10,1,9,2],9,0, X, C)
应该给出X = [0,10,1,0,2]
andC = 2
。输出列表中元素的顺序无关紧要。