[go: up one dir, main page]

Menu

[r80]: / sudoku.lua  Maximize  Restore  History

Download this file

77 lines (59 with data), 1.3 kB

 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
require"luacalc"
open"../sud.csv"
--save"../sudoku.csv"
for i = 1 , 9 do
set(i,10, "=LEFT(SELECT(1, $x, 9, $x))")
end
for i = 1, 9 do
set(10,i, "=LEFT(SELECT($y, 1, $y, 9))")
end
set(11, 1, "=LEFT(A1:C3)")
set(11, 2, "=LEFT(D1:F3)")
set(11, 3, "=LEFT(G1:I3)")
set(12, 1, "=LEFT(A4:C6)")
set(12, 2, "=LEFT(D4:F6)")
set(12, 3, "=LEFT(G4:I6)")
set(13, 1, "=LEFT(A7:C9)")
set(13, 2, "=LEFT(D7:F9)")
set(13, 3, "=LEFT(G7:I9)")
local ind = luacalc.index_to_string
for i=1, 9 do
for j = 1, 9 do
local s = "=IF(ISEMPTY("..luacalc.index_to_string(i)..j.."), SAME("..ind(i).."10,"..ind(math.ceil(i/3))..(math.ceil(j/3) + 10)..", J"..j.."), '')"
set(j+13, i, s)
print(j+13, i, s)
end
end
function basic_solve()
local retry = true
-- loop while there may be more cells
while retry do
retry = false
for i=1, 9 do
for j = 1, 9 do
local s = get(i, j+13)
if string.len(s)==1 then
print("solved!", s, i , j)
local cell = ind(i)..j
print("bef", cell, _G[cell])
set(j, i, s)
print("aft", cell, _G[cell])
retry = true
end
-- print(j+13, i, s)
end
end
end
end
basic_solve()
function next_solve()
string.foreach(_G["A11"], function(val)
for i=1, 3 do
for j = 1, 3 do
print(i, j, val)
end
end
end)
end
next_solve()
save"initialres.csv"