% -*- prolog -*-

rel(a,b).
rel(b,c).

t(X,Y) :- rel(X,Y).
t(X,Y) :- rel(X,B), t(B,Y).

% syn( rodic, syn )
% dcera( rodic, dcera )

syn( homer, bart ).
syn( marge, bart ).

dcera( homer, liza ).
dcera( marge, liza ).

sestra( Osoba, Sestra ) :-
    dcera( X, Osoba ), dcera( X, Sestra ), Osoba \= Sestra.
sestra( Osoba, Sestra ) :-
    syn( X, Osoba ), dcera( X, Sestra ).

vlastniSestra( Osoba, Sestra ) :-
    dite( X, Osoba ), dcera( X, Sestra ), Osoba \= Sestra,
    dite( Y, Osoba ), X \= Y, dcera( Y, Sestra ).

dite( Rodic, Dite ) :- dcera( Rodic, Dite ).
dite( Rodic, Dite ) :- syn( Rodic, Dite ).

rodice( Dite, Rodic1, Rodic2 ) :-
    dite( Rodic1, Dite ), dite( Rodic2, Dite ), Rodic1 \= Rodic2.


% f1(X).
r(a,b).
r(a,c).
r(b,d).

f1(a). % nekonečná větev
f1(X) :- f1(Y), r(Y,X).

f2(X) :- f2(Y), r(Y,X). % zcadlově převrácený oproti f1
f2(a).

% nejlepší
g1(a). % všechny větve konečné
g1(X) :- r(Y,X), g1(Y).

g2(X) :- r(Y,X), g2(Y). % zrcadlově oproti g1
g2(a).

fact(0, 1).
fact(N, X) :- N > 0, NN is N - 1, fact( NN, XX ), X is XX * N.

% fact(N, X).





word(astoria,  a,s,t,o,r,i,a).
word(baratto,  b,a,r,a,t,t,o).
word(cobalto,  c,o,b,a,l,t,o).
word(pistola,  p,i,s,t,o,l,a).
word(statale,  s,t,a,t,a,l,e).

crossword( V1, V2, V3, H1, H2, H3 ) :-
    word( V1, _, P11, _, P31, _, P51, _ ),
    word( H1, _, P11, _, P13, _, P15, _ ),

    word( V2, _, P13, _, P33, _, P53, _ ),
    word( H2, _, P31, _, P33, _, P35, _ ),

    word( V3, _, P15, _, P35, _, P55, _ ),
    word( H3, _, P51, _, P53, _, P55, _ ).


%    |M01|   |M03|   |M05|   
% M10|M11|M12|M13|M14|M15|M16
%    |M21|   |M23|   |M25|   
% M30|M31|M32|M33|M34|M35|M36
%    |M41|   |M43|   |M45|   
% M50|M51|M52|M53|M54|M55|M56
%    |M61|   |M63|   |M65|   
