summaryrefslogtreecommitdiff
path: root/lua/4.lua
blob: f965bc64567e3c9dc23d2108f7c367f3e1e684a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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)