好的,所以我想在SWI-Prolog中编写代码。我应该交换列表的开头和结尾(在中间元素处断开)。对于偶数尺寸列表,我发现它很简单,但对于奇数,我遇到了麻烦。
:- use_module(library(lists)).
swap(L, Swapped) :-
same_length(L, Swapped),
length(L, S),
( mod(S, 2) =:= 0
-> divi(L, A, B)
; nth1(S, L, X, R),
divi(R, A, Las),
append(Las, X, B)
),
append(B, A, Swapped).
divi(L, A, B) :-
length(L, N),
Half is N div 2,
length(A, Half),
length(B, Half),
append(A, B, L).
*编辑 - 我使用nth1来删除中间元素,尝试将其带到一个偶数大小的列表并交换,但我的输出始终为false。
以下是我如何输入
的示例?-swap([1,2,3,4],Swapped).
测试时需要更改列表的数量和大小。