Beruflich Dokumente
Kultur Dokumente
ARTIFICIAL INTELLIGENCE
SUBMITTED BY:-
NAME:-SHOYAB SIDDIQUEE
ROLL NO:-A16
SECTION:-A1806
SUBMITTED TO:-
MR.VIJAYENDHRA SIR
% solving n queens!
solve(Size, Solution) :-
sequence(Size, Grid),
permutation(Grid, Solution),
S is Size -1,
distinct_diagonals(Solution, S),
draw(Solution),
write('\n').
sequence(1, [0]).
sequence(Length, [Item|T]) :-
sequence(Item, T),
!.
% Define solutions
goal(Grid) :-
distinct_rows(Grid),
distinct_diagonals(Grid).
distinct_rows([]).
distinct_rows([H|T]) :-
\+ nth0(_, T, H),
distinct_rows(T).
distinct_diagonals(_, 0).
distinct_diagonals(Grid, Offset) :-
distinct_diagonals_aux(Grid, Offset),
NewOffset is Offset -1,
distinct_diagonals(Grid, NewOffset),
!.
distinct_diagonals_aux([], _).
distinct_diagonals_aux([H|T], Offset) :-
Test1 is H + Offset,
Test2 is H - Offset,
distinct_diagonals_aux(T, Offset).
draw(Grid) :-
write('\n'),
length(Grid, Size),
draw_aux(Grid, Size),
!.
draw_aux([], Size) :-
draw_separator(Size).
draw_aux([H|T], Size) :-
draw_separator(Size),
draw_line(Size, H),
draw_aux(T, Size).
draw_separator(0) :-
write('+\n').
draw_separator(Size) :-
Size > 0,
write('+---'),
draw_separator(NewSize).
draw_line(0, _) :-
write('|\n').
draw_line(Size, 0) :-
write('| x '),
draw_line(NewSize, -1).
draw_line(Size, Position) :-
Size > 0,
write('| '),
draw_line(NewSize, NewPosition).