L
오른쪽 N
배 M
회전에 의해 형성된 새로운 목록 술어, rotate(L,M,N)
에 작업 시간.프롤로그 : 회전 목록 N 바로
내 접근 방식은 단지 M
의 꼬리를 머리에 N
번 추가하는 것이 었습니다.
rotate(L, M, N) :-
( N > 0,
rotate2(L, M, N)
; L = M
).
rotate2(L, [H|T], Ct) :-
append(T, [H], L),
Ct2 is Ct - 1,
rotate2(L, T, Ct2).
현재, 내 코드에 상관없이에 설정되어있는 것을
N
, 원래
M
동일
L
을 반환하지 않습니다. 내가 재귀 할 때처럼 보이지만 꼬리가 머리로 제대로 이동하지 않습니다.
힌트 : 'append'를 두 번 호출하면 훨씬 효율적으로 작업을 수행 할 수 있습니다. –
@larsmans 추가 전화는 두 번입니까? 계속해서 N을 줄여야합니까? –