takmicarA(1).
takmicarA(2).
takmicarA(3).
takmicarA(4).
takmicarA(5).

takmicarB(1).
takmicarB(2).
takmicarB(3).
takmicarB(4).
takmicarB(5).

takmicarC(1).
takmicarC(2).
takmicarC(3).
takmicarC(4).
takmicarC(5).

takmicarD(1).
takmicarD(2).
takmicarD(3).
takmicarD(4).
takmicarD(5).

takmicarE(1).
takmicarE(2).
takmicarE(3).
takmicarE(4).
takmicarE(5).

uslovX(A,D,B,C):- (A==1,D==2,C>B);(not(A==1),not(D==2),C>B);(not(A==1),D==2,C<B).
uslovY(B,D,A,E):- (not(B==5),D>A,not(E==2));(B==5,D<A,not(E==2));(B==5,D>A,E==2).
uslovZ(E,D,B,C):- (E<D,B==3,not(C==5));(E>D,not(B==3),not(C==5));(E>D,B==3,C==5).

odgovaraA(A,N):-A==1,N is 1.
odgovaraA(A,N):-not(A==1), N is 0.
odgovaraB(B,N):-B==2,N is 1.
odgovaraB(B,N):-not(B==2), N is 0.
odgovaraC(C,N):-C==3,N is 1.
odgovaraC(C,N):-not(C==3),N is 0.
odgovaraD(D,N):-D==4,N is 1.
odgovaraD(D,N):-not(D==4), N is 0.
odgovaraE(E,N):-E==5,N is 1.
odgovaraE(E,N):-not(E==5),N is 0.

uslovP(A,B,C,D,E,N):-odgovaraA(A,N1),odgovaraB(B,N2),odgovaraC(C,N3),odgovaraD(D,N4),odgovaraE(E,N5),
                     N is N1+N2+N3+N4+N5.
                      
resi:- takmicarA(A), takmicarB(B), takmicarC(C), takmicarD(D), takmicarE(E),
       not(A==B),not(A==C), not(A==D),not(A==E), 
       not(B==C), not(B==D),not(B=E), 
       not(C==D),not(C==E),
       not(D==E), uslovX(A,D,B,C),uslovY(B,D,A,E),uslovZ(E,D,B,C),
       uslovP(A,B,C,D,E,N),  N==2,
       write('A je stigao '),write(A),nl,
       write('B je stigao '),write(B),nl,
       write('C je stigao '),write(C),nl,
       write('D je stigao '),write(D),nl,
       write('E je stigao '),write(E),nl.       