% Bilet10
% Patched 14.01.13
% To start type: jstart.
stayAfter(1,2).
stayAfter(2,3).
stayAfter(3,4).
stayAfter(4,5).
stayAfter(5,6).
stayAfter(6,7).
pr(Z):-pr(X,Z).
pr(X,Z):-stayAfter(X,Y),pr(Y,Z1),Z=[X|Z1],!.
pr(X,[X]).
jstart:- write(' BBegu pr(X,Y) gJL9 vivoda o4epegu.'),nl.
дополнительно...:
%16. Определить предикат в_одной_очереди(A,B) -
% A и B стоят в одной очереди. Очереди заданы при помощи предикатa
%стоит_сразу_за(X,Y) - X стоит сразу за Y в очереди.
%Предикат стоит_сразу_за(X,Y) описан
st_za(a,b).
st_za(b,c).
st_za(c,d).
st_za(e,g).
st_za(g,h).
st_za(h,k).
st_za(l,p).
per(A):-st_za(_,A), not st_za(A,_).
posl(A):-st_za(A,_), not st_za(_,A).
posl_il([X],X).
posl_il([Y|L],X):-posl_il(L,X).
dobv_kon(X,[],[X]).
dobv_kon(X,[Y|L],[Y|L1]):-dobv_kon(X,L,L1).
spis(A,B,L):-spis(A,B,[A],L).
spis(A,B,L,L):-posl_il(L,B).
spis(A,B,L1,L):-posl_il(L1,Z),Z\=B,st_za(Z,X),dobv_kon(X,L1,L2), spis(A,B,L2,L).
ochered(L):-per(B),posl(A),spis(A,B,L).
member(X,[X|_]).
member(X,[Y|L]):- member(X,L).
v_odn_och(A,B):- ochered(L), member(A,L),member(B,L),A\=B.
Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.