我最近开始学习Prolog,我有一个任务来编写一个list(N, L)
生成列表L 的谓词,这样:
作者说有N!这样的清单.
例如,对于N = 3,所有解决方案都是:
?- list(3, L).
L = [1, 1, 2, 2, 3, 3] ;
L = [1, 1, 2, 3, 3, 2] ;
L = [1, 2, 2, 1, 3, 3] ;
L = [1, 2, 2, 3, 3, 1] ;
L = [1, 2, 3, 3, 2, 1] ;
L = [1, 2, 3, 1, 2, 3] ;
false.
Run Code Online (Sandbox Code Playgroud)
我目前的解决方案如下:
even_distance(H, [H | _]) :-
!.
even_distance(V, [_, …
Run Code Online (Sandbox Code Playgroud)