summaryrefslogtreecommitdiff
path: root/lua/4.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/4.lua')
-rwxr-xr-xlua/4.lua38
1 files changed, 38 insertions, 0 deletions
diff --git a/lua/4.lua b/lua/4.lua
new file mode 100755
index 0000000..f965bc6
--- /dev/null
+++ b/lua/4.lua
@@ -0,0 +1,38 @@
+N = 8
+
+function isPlaceOK(a,n,c)
+ for i = 1, n - 1 do
+ if (a[i] == c) or
+ (a[i] - n == c - n) or
+ (a[i] + n == c + n) then
+ return false;
+ end
+ end
+ return true;
+end
+
+function printSolution(a)
+ for i = 1, N do
+ for j = 1, N do
+ io.write(a[i] == j and "X" or "-", ' ');
+ end
+ io.write('\n');
+ end
+ io.write('\n');
+end
+
+function addQueen(a, n)
+ if n > N then
+ printSolution(a);
+ else
+ for c = 1, N do
+ if isPlaceOK(a,n,c) then
+ a[n] = c;
+ addQueen(a, n + 1);
+ end
+ end
+ end
+end
+
+
+addQueen({},1)