Ответ в теме: Помогите решить задачу Железнодорожная стрелка

      Комментарии к записи Ответ в теме: Помогите решить задачу Железнодорожная стрелка отключены
#1870

questioner
Участник

Не получается написать ограничения на правильное «использование» тупика. Да и выходит не логичным, что последний вагон одного поезда, сразу становится последним вагоном второго. Подскажите, что исправить, пожалуйста.

lastN(X,N,Begin,End):- 
append(Begin,End,X), 
lenght(End,N).
firstN(X, N, Begin,End):- 
append(Begin,End,X),
lenght(Begin,N).
solve(A,B):-
write(A), write(" "),
write([]), write(" "), 
write(B),nl, 
find(A,B,0).
find(A,B, K):- lenght(B,N), N=1, lastN(B,1,Begin,End),
write(A),write(" "),write(End), write(" "), write(Begin),nl,reverse(End,REnd),
append(REnd,A,NewA), write(NewA),write(" "),write([]), write(" "),
write(Begin),nl, K1 is K+1,find(NewA,Begin, K1).
find2(_,_,0).
find2(B,A,K):-
firstN(A,1,Begin,End), reverse(Begin, RBegin), 
write(B),write(" "),write(RBegin),write(" "),write(End),nl,
append(B,RBegin,NewB), 
write(NewB),write(" "),write([]),write(" "),write(End),nl,
K1 is K-1, find2(NewB,End,K1).