Skip to content
Snippets Groups Projects
Commit a003999f authored by tbuckworth's avatar tbuckworth
Browse files

improving efficiency

parent 94cc08cf
Branches recruiter-internship-page
No related tags found
No related merge requests found
......@@ -3,19 +3,26 @@
all_rows(Rs):-
setof(R, C^Colour^input_colour(R,C,Colour), Rs).
all_cols(Cs):-
setof(C, R^Colour^input_colour(R,C,Colour), Cs).
row(R):-
all_rows(Rs),
member(R,Rs).
column(C):-
input_colour(_,C,_).
all_cols(Cs),
member(C,Cs).
nrow(NR):-
all_rows(Rs),
length(Rs, NR).
ncol(NC):-
setof(C, R^Colour^input_colour(R,C,Colour), Cs),
all_cols(Cs),
length(Cs, NC).
vertical_colour(C,Colour):-
......@@ -24,22 +31,20 @@ vertical_colour(C,Colour):-
Colour \= black.
vertical_colour(C,Colour):-
nrow(NR),
input_colour(NR,C,Colour),
row(R),
input_colour(R,C,Colour),
Colour \= black.
horizontal_colour(R,Colour):-
input_colour(R,C,Colour),
C is 0,
Colour \= black.
horizontal_colour(R,Colour):-
ncol(NC),
input_colour(R,NC,Colour),
column(C),
input_colour(R,C,Colour),
Colour \= black.
horizontal_diff(N):-
horizontal_colour(R,_),
horizontal_colour(R2,_),
......@@ -52,29 +57,67 @@ vertical_diff(N):-
C2 > C,
N is C2 - C.
remainder(N,D,R):-
integer(X),
R is N - X * D.
output_colour(_,C,Colour):-
vertical_colour(Cstart,Colour),
column(C),
output_colour(R,C,Colour):-
vertical_colour(Cstart, Colour),
vertical_diff(VD),
column(C),
row(R),
C >= Cstart,
VDtwo is 2 * VD,
remainder(C-Cstart, VDtwo, R),
R == 0.
0 is ((C-Cstart) rem (2 * VD)).
output_colour(R,_,Colour):-
output_colour(R,C,Colour):-
horizontal_colour(Rstart, Colour),
row(R),
horizontal_diff(VD),
row(R),
column(C),
R >= Rstart,
VDtwo is 2 * VD,
remainder(R-Rstart, VDtwo, Rem),
Rem == 0.
0 is ((R-Rstart) rem (2 * VD)).
output_colour(R,C,black):-
\+ output_colour(R,C,_).
%set_prolog_flag(print_length, infinite).
%setof([R,C,Colour], R^C^Colour^output_colour(R,C,Colour), Cs).
%written:-
% output_colour(R,C,Colour),
% write({"output_colour("+R+","+C+","+Colour+").\n"}).
forall(P, Q):-
\+ (P, \+ Q).
print_forall :-
forall(output_colour(R, C, Colour),
(write('output_colour('),
write(R), write(', '),
write(C), write(', '),
write(Colour), write(').'),
nl)).
print_setof :-
setof((R, C, Colour), R^C^Colour^output_colour(R, C, Colour), Results),
print_results(Results).
print_results([]).
print_results([(R, C, Colour) | Rest]) :-
write('output_colour('),
write(R), write(', '),
write(C), write(', '),
write(Colour), write(').'), nl,
print_results(Rest).
%output_colour(R,C,black):-
% \+ output_colour(R,C,_).
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment