%% Author:Lucie Zolta
%% Date: 30.3.2010

%% strednik je nebo!

%%

%%p([1,1],[1,2],[1,3],[2,1],[2,2],[2,3],[3,1],[3,2],[3,3]).
:-dynamic p/2.
p([1,1],-). p([1,2],-). p([1,3],-). p([1,4],-). p([1,5],-). p([1,6],-). p([1,7],-). p([1,8],-). p([1,9],-). p([1,10],-).
p([2,1],-). p([2,2],-). p([2,3],-). p([2,4],-). p([2,5],-). p([2,6],-). p([2,7],-). p([2,8],-). p([2,9],-). p([2,10],-).
p([3,1],-). p([3,2],-). p([3,3],-). p([3,4],-). p([3,5],-). p([3,6],-). p([3,7],-). p([3,8],-). p([3,9],-). p([3,10],-).
p([4,1],-). p([4,2],-). p([4,3],-). p([4,4],-). p([4,5],-). p([4,6],-). p([4,7],-). p([4,8],-). p([4,9],-). p([4,10],-).
p([5,1],-). p([5,2],-). p([5,3],-). p([5,4],-). p([5,5],-). p([5,6],-). p([5,7],-). p([5,8],-). p([5,9],-). p([5,10],-).
p([6,1],-). p([6,2],-). p([6,3],-). p([6,4],-). p([6,5],-). p([6,6],-). p([6,7],-). p([6,8],-). p([6,9],-). p([6,10],-).
p([7,1],-). p([7,2],-). p([7,3],-). p([7,4],-). p([7,5],-). p([7,6],-). p([7,7],-). p([7,8],-). p([7,9],-). p([7,10],-).
p([8,1],-). p([8,2],-). p([8,3],-). p([8,4],-). p([8,5],-). p([8,6],-). p([8,7],-). p([8,8],-). p([8,9],-). p([8,10],-).
p([9,1],-). p([9,2],-). p([9,3],-). p([9,4],-). p([9,5],-). p([9,6],-). p([9,7],-). p([9,8],-). p([9,9],-). p([9,10],-).
p([10,1],-). p([10,2],-). p([10,3],-). p([10,4],-). p([10,5],-). p([10,6],-). p([10,7],-). p([10,8],-). p([10,9],-). p([10,10],-).

o([X1,Y1],[X2,Y2],[X3,Y3],[X4,Y4],[X5,Y5]):- Y1 is Y2, Y2 is Y3, Y3 is Y4, Y4 is Y5, % a |
                               X2 is X1+1, X3 is X2+1, X4 is X3+1, X5 is X4+1.
o([X1,Y1],[X2,Y2],[X3,Y3],[X4,Y4],[X5,Y5]):- X2 is X1+1, Y2 is Y1+1, % b \
                               X3 is X2+1, Y3 is Y2+1,
                               X4 is X3+1, Y4 is Y3+1,
                               X5 is X4+1, Y5 is Y4+1.
o([X1,Y1],[X2,Y2],[X3,Y3],[X4,Y4],[X5,Y5]):- X1 is X2, X2 is X3, X3 is X4,X4 is X5, % c -
                               Y2 is Y1+1, Y3 is Y2+1, Y4 is Y3+1, Y5 is Y4+1.
o([X1,Y1],[X2,Y2],[X3,Y3],[X4,Y4],[X5,Y5]):- X2 is X1-1, Y2 is Y1+1, % d /
                               X3 is X2-1, Y3 is Y2+1,
                               X4 is X3-1, Y4 is Y3+1,
                               X5 is X4-1, Y5 is Y4+1.
:-dynamic l/1.
l([5,5]).

last(X):- l(Y),retract(l(Y)),assert(l(X)).
%% tah koleèka na souĝadnici X
to(X):- p(X,-),retract(p(X,-)),assert(p(X,o)),last(X),nl,vypis,tx,nl,vypis. %vitez(Kdo,Kde1,Kde2,Kde3),nl,write('Vyhral:'),write(Kdo),nl.


%%previdla pro tah pocitace:
tx:- p(S1,-),p(l(S2),o),p(S3,o),p(S4,o),p(S5,-), % vyber mi 5 souradnic na kterych je posloupnost obrazku -looo ,
    o(S1,S2,S3,S4,S5), % a ktere jsou jednim z danych tvaru
     retract(p(S5,-)), % odeber z kodu radek p(S1,-)
    assert(p(S5,x)), % vloz do kodu radek p(S1,x)
    write('pravidlo D1A'),nl.

tx:- p(S1,-),p(S2,o),p(S3,o),p(S4,o),p(S5,o), % vyber mi 5 souradnic na kterych je posloupnost obrazku -oooo ,
    o(S1,S2,S3,S4,S5), % a ktere jsou jednim z danych tvaru
         retract(p(S1,-)), % odeber z kodu radek p(S1,-)
    assert(p(S1,x)), % vloz do kodu radek p(S1,x)
    write('pravidlo D2'),nl.
 %% tah pocitace na souĝadnice O
 %% S4 - S1
 %% S5 S2 -K
 %% S3 - -
%tx:- p(S1,-),p(S2,o),p(S3,-),o(S1,S2,S3),
% p(S4,-),p(S5,-),o(S4,S5,S3),
% retract(p(S3,-)),assert(p(S3,x)),write('pravidlo 2'),nl.

tx:- l([A,B]),p([A,B],o),p([A-1,B-1],-),
     retract(p([A-1,B-1],-)),assert(p([A-1,B-1],x)),write('pravidlo R11').

% hledej v poli jeden z definovanych objektu, ktery je sestaven ze stejnych symbolu
vitez(C1,S1,S2,S3,S4,S5):-p(S1,C1),p(S2,C2),p(S3,C3),p(S4,C4),p(S5,C5),
              o(S1,S2,S3,S4,S5), % souradnice splnuji podminky pro jednotlive objekty |\-/
              C1 \='-', % a je ruzny od pomlcky
              C1 = C2, C2 = C3, C3 = C4, C4 = C5. % znak je stejny na vsech polich

vitez(C1,S1,S2,S3,S4,S5):-C1='-'.

vypis:-p([1,1],S1), p([1,2],S2), p([1,3],S3), p([1,4],S4), p([1,5],S5), p([1,6],S6), p([1,7],S7), p([1,8],S8), p([1,9],S9), p([1,10],S10),
      p([2,1],S11),p([2,2],S12),p([2,3],S13),p([2,4],S14),p([2,5],S15),p([2,6],S16),p([2,7],S17),p([2,8],S18),p([2,9],S19),p([2,10],S20),
     p([3,1],S21),p([3,2],S22),p([3,3],S23),p([3,4],S24),p([3,5],S25),p([3,6],S26),p([3,7],S27),p([3,8],S28),p([3,9],S29),p([3,10],S30),
     p([4,1],S31),p([4,2],S32),p([4,3],S33),p([4,4],S34),p([4,5],S35),p([4,6],S36),p([4,7],S37),p([4,8],S38),p([4,9],S39),p([4,10],S40),
     p([5,1],S41),p([5,2],S42),p([5,3],S43),p([5,4],S44),p([5,5],S45),p([5,6],S46),p([5,7],S47),p([5,8],S48),p([5,9],S49),p([5,10],S50),
     p([6,1],S51),p([6,2],S52),p([6,3],S53),p([6,4],S54),p([6,5],S55),p([6,6],S56),p([6,7],S57),p([6,8],S58),p([6,9],S59),p([6,10],S60),
     p([7,1],S61),p([7,2],S62),p([7,3],S63),p([7,4],S64),p([7,5],S65),p([7,6],S66),p([7,7],S67),p([7,8],S68),p([7,9],S69),p([7,10],S70),
     p([8,1],S71),p([8,2],S72),p([8,3],S73),p([8,4],S74),p([8,5],S75),p([8,6],S76),p([8,7],S77),p([8,8],S78),p([8,9],S79),p([8,10],S80),
     p([9,1],S81),p([9,2],S82),p([9,3],S83),p([9,4],S84),p([9,5],S85),p([9,6],S86),p([9,7],S87),p([9,8],S88),p([9,9],S89),p([9,10],S90),
     p([10,1],S91),p([10,2],S92),p([10,3],S93),p([10,4],S94),p([10,5],S95),p([10,6],S96),p([10,7],S97),p([10,8],S98),p([10,9],S99),p([10,10],S100),

       nl,
       write([S1,S2,S3,S4,S5,S6,S7,S8,S9,S10]),nl,
       write([S11,S12,S13,S14,S15,S16,S17,S18,S19,S20]),nl,
       write([S21,S22,S23,S24,S25,S26,S27,S28,S29,S30]),nl,
       write([S31,S32,S33,S34,S35,S36,S37,S38,S39,S40]),nl,
       write([S41,S42,S43,S44,S45,S46,S47,S48,S49,S50]),nl,
       write([S51,S52,S53,S54,S55,S56,S57,S58,S59,S60]),nl,
       write([S61,S62,S63,S64,S65,S66,S67,S68,S69,S70]),nl,
       write([S71,S72,S73,S74,S75,S76,S77,S78,S79,S80]),nl,
       write([S81,S82,S83,S84,S85,S86,S87,S88,S89,S90]),nl,
       write([S91,S92,S93,S94,S95,S96,S97,S98,S99,S100]),nl.
