File tree Expand file tree Collapse file tree 3 files changed +112
-0
lines changed
Expand file tree Collapse file tree 3 files changed +112
-0
lines changed Original file line number Diff line number Diff line change 1+ def main
2+
3+ def printBoard: board as byte[][], n as int
4+ var i j is int
5+ i := 0
6+ loop:
7+ if i >= n :
8+ break
9+ j := 0
10+ loop:
11+ if j >= n :
12+ break
13+ if board[i][j] = 1 :
14+ writeString: "Q "
15+ else :
16+ writeString: ". "
17+ j := j + 1
18+ writeString: "\n"
19+ i := i + 1
20+ writeString: "\n"
21+
22+ def isSafe is byte: board as byte[][], row col n as int
23+ var i j is int
24+
25+ # check columns
26+ i := 0
27+ loop:
28+ if i >= row :
29+ break
30+ if board[i][col] = 1 :
31+ return : 0
32+ i := i + 1
33+
34+ # check left diagonal
35+ i := row - 1
36+ j := col - 1
37+ loop:
38+ if i < 0 or j < 0 :
39+ break
40+ if board[i][j] = 1 :
41+ return : 0
42+ i := i - 1
43+ j := j - 1
44+
45+ # check right diagonal
46+ i := row - 1
47+ j := col + 1
48+ loop:
49+ if i < 0 or j >= n :
50+ break
51+ if board[i][j] = 1 :
52+ return : 0
53+ i := i - 1
54+ j := j + 1
55+
56+ return : 1
57+
58+ def solveNQueensUtil is byte: board as byte[][], row n as int
59+ if row = n :
60+ printBoard: board, n
61+ return : 1
62+
63+ var col is int
64+ col := 0
65+ loop:
66+ if col >= n :
67+ break
68+ if isSafe: board, row, col, n :
69+ board[row][col] := 1
70+ if solveNQueensUtil: board, row + 1, n :
71+ return : 1
72+ board[row][col] := 0
73+ col := col + 1
74+
75+ return : 0
76+
77+ def solveNQueens: n as int
78+ var board is byte[n][n]
79+ var i j is int
80+
81+ i := 0
82+ loop:
83+ if i >= n :
84+ break
85+ j := 0
86+ loop:
87+ if j >= n :
88+ break
89+ board[i][j] := 0
90+ j := j + 1
91+ i := i + 1
92+
93+ if solveNQueensUtil: board, 0, n :
94+ writeString: "Solution found.\n"
95+ else :
96+ writeString: "No solution exists.\n"
97+
98+ var size is int
99+ writeString: "Enter board size: "
100+ size := readInteger()
101+ solveNQueens: size
Original file line number Diff line number Diff line change 1+ 8
Original file line number Diff line number Diff line change 1+ Q . . . . . . .
2+ . . . . . . Q .
3+ . . . . Q . . .
4+ . . . Q . . . .
5+ . . Q . . . . .
6+ . Q . . . . . .
7+ . . . . . Q . .
8+ . . . . . . . Q
9+
10+ Solution found.
You can’t perform that action at this time.
0 commit comments