我想解决一个简单的问题,但是即使我尝试了许多不同的方法,也找不到解决方案。我正在使用SICStus Prolog(如果那很重要),并且我想获得一个列表的所有子列表/子集(我不知道哪个术语对这个正确),该列表包含连续的元素。例如,如果我有列表[1、2、3、4],将sl/2谓词称为sl([1, 2, 3, 4], R).,则预期结果为:
? - sl([1, 2, 3, 4], R).
R = [] ? ;
R = [1] ? ;
R = [1, 2] ? ;
R = [1, 2, 3] ? ;
R = [1, 2, 3, 4] ? ;
R = [2] ? ;
R = [2, 3] ? ;
R = [2, 3, 4] ? ;
R = [3] ? ;
R = [3, 4] ? ;
R = [4] …Run Code Online (Sandbox Code Playgroud)