Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- goodgrid([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]).
- isRight(X) :- goodgrid(X).
- main(Grid, NewGrid, L) :-
- solve(1, Grid, NewGrid, L).
- solve(N,[], [H2|T2], L) :- L = [H2|T2].
- solve(N, [H|T], [H2|T2], L) :-
- (H2 =:= 1 -> NewC is N+5, getposition(5,N,X,Y),
- write('('),write(X),write(','),write(Y), write(')'), nl,
- M is NewC mod 5,
- click(M, NewC, [H2|T2], NewGrid),
- write(NewGrid),
- NewN is N+1, solve(NewN, T, NewGrid, L); NewN is N+1, solve(NewN, T, [H2|T2], L)).
- getposition(Size, Pos, Row, Column) :-
- X is truncate(Pos / Size),
- (Pos mod Size > 0, !, Row is X + 1;Row is X),
- Y is Pos - X * Size,
- (Y =:= 0, !, Column is Size;Column is Y).
- flip(X, New) :-
- (X =:= 0, !, New is 1; New is 0).
- click(M,Pos,Grid,Newgrid) :-
- (M =:= 0,
- NewPos1 is Pos-5, flipPos(1,NewPos1,Grid,Temp1),
- NewPos2 is Pos-1, flipPos(1,NewPos2,Temp1,Temp2),
- NewPos3 is Pos, flipPos(1,NewPos3,Temp2,Temp3),
- NewPos5 is Pos+5, flipPos(1,NewPos5,Temp3,Newgrid); true),
- (M =:= 1,
- NewPos1 is Pos-5, flipPos(1,NewPos1,Grid,Temp1),
- NewPos3 is Pos, flipPos(1,NewPos3,Temp1,Temp2),
- NewPos4 is Pos+1, flipPos(1,NewPos4,Temp2,Temp3),
- NewPos5 is Pos+5, flipPos(1,NewPos5,Temp3,Newgrid); true),
- (M > 1,
- NewPos1 is Pos-5, flipPos(1,NewPos1,Grid,Temp1),
- NewPos2 is Pos-1, flipPos(1,NewPos2,Temp1,Temp2),
- NewPos3 is Pos, flipPos(1,NewPos3,Temp2,Temp3),
- NewPos4 is Pos+1, flipPos(1,NewPos4,Temp3,Temp4),
- NewPos5 is Pos+5, flipPos(1,NewPos5,Temp4,Newgrid); true).
- flipPos(Count,Pos,[],[]).
- flipPos(Count,Pos,[H|T],[H2|T2]) :-
- (Pos = Count -> flip(H, New), H2 = New; H2 = H),
- Count2 is Count+1,
- flipPos(Count2,Pos,T,T2).
- getBottomRow([H|T],Row,19) :- Row = T.
- getBottomRow([H|T],Row,Count) :- (Count<20 -> C is Count+1,getBottomRow(T,Row,C)).
- patternMatch(Pat,Ans) :- (Pat = [1,0,0,0,1] -> Ans = [1,2]). %[1,1,0,0,0]
- patternMatch(Pat,Ans) :- (Pat = [0,1,0,1,0] -> Ans = [1,4]). %[1,0,0,1,0]
- patternMatch(Pat,Ans) :- (Pat = [1,1,1,0,0] -> Ans = [2]). %[0,1,0,0,0]
- patternMatch(Pat,Ans) :- (Pat = [0,0,1,1,1] -> Ans = [4]). %[0,0,0,1,0]
- patternMatch(Pat,Ans) :- (Pat = [1,0,1,1,0] -> Ans = [5]). %[0,0,0,0,1]
- patternMatch(Pat,Ans) :- (Pat = [0,1,1,0,1] -> Ans = [1]). %[1,0,0,0,0]
- patternMatch(Pat,Ans) :- (Pat = [1,1,0,1,1] -> Ans = [3]). %[0,0,1,0,0]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement