【发布时间】:2023-01-31 03:23:02
【问题描述】:
我被要求
定义一个谓词
subseq/2,签名为subseq(-,+), 当它的两个参数都是列表并且它的第一个 可以通过删除零个或多个元素来构造参数 从它的第二个参数。...具有预期的解决方案顺序:
?- subseq(X, [a, b, c]). X = [a, b, c] ; X = [a, b] ; X = [a, c] ; X = [a] ; X = [b, c] ; X = [b] ; X = [c] ; X = [].我的代码:
subseq([], []). subseq([], [_|_]). subseq([X|XS], [X|YS]) :- subseq(XS, YS). subseq([X|XS], [_|YS]) :- subseq([X|XS], YS).我的代码的解决顺序:
?- subseq(X, [a, b, c]). X = [] X = [a] X = [a, b] X = [a, b, c] X = [a, c] X = [b] X = [b, c] X = [c] ; false.如何实现预期的解决方案顺序?
【问题讨论】:
标签: prolog