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

      Комментарии к записи Ответ в теме: Помогите решить задачу Железнодорожная стрелка отключены
#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).