Toggle navigation
?
users online
Logout
Open hangout
Open chat for current file
flipfront(List, N, NewList) :- length(Prefix, N), append(Prefix, Suffix, List), reverse(Prefix, PrefixReversed), append(PrefixReversed, Suffix, NewList). /** <examples> ?- flipfront([3,1,2,1],4, L). ?- flipfront([1,2,1,3],2, L). ?- flipfront([2,1,1,3],3, L). ?- flipfront_sort_plan([3,1,2,1],[4,2,3], PlanLength). ?- flipfront_sort_plan([3,1,2,1],Plan, PlanLength). */ plan_sorts(List, [H|T]) :- flipfront(List, H, NewList), plan_sorts(NewList, T). plan_sorts(List, []) :- msort(List, List). %today I learned sort/2 removes duplicates %use msort to preserve them p_member(L, X) :- member(X, L). flipfront_sort_plan(List, Plan, PlanLength) :- length(List, ListLength), numlist(2, ListLength, Candidates), length(Plan, PlanLength), maplist(p_member(Candidates), Plan), plan_sorts(List, Plan).