:- use_module(contestlib,[writeN/2]). stop(N) :- first_last_line(N), slope(N - 2,N - 2,N,-1), vertical(N//2,3*N - 4), mid(3*N - 6), vertical(N//2,3*N - 4), slope(N - 2,1,3*N - 6,1), first_last_line(N). first_last_line(N) :- N1 is N - 1, space(N1), red(N), nl. slope(M,SpaceBefore,SpaceMiddle,I) :- ( M > 0 -> space(SpaceBefore), red(1), space(SpaceMiddle), red(1), nl, M1 is M - 1, SpaceBefore1 is SpaceBefore + I, SpaceMiddle1 is SpaceMiddle - I - I, slope(M1,SpaceBefore1,SpaceMiddle1,I) ; true ). mid(N) :- red(1), space(1), white(N), space(1), red(1), nl. vertical(N,Space) :- ( N > 0 -> red(1), space(Space), red(1), nl, N1 is N - 1, vertical(N1,Space) ; true ). red(N) :- writeN(N,'R'). space(N) :- writeN(N,' '). white(N) :- writeN(N,'W').