Sudoku: Difference between revisions
→{{header|EasyLang}}
Antoni Gual (talk | contribs) |
|||
Line 3,174:
len grid[] 82
#
for pos = 1 to 81
if pos mod 9 = 1
s$ = input
if s$ = ""
s$ = input
.▼
len inp[] 0
if substr s$ i 1 <> " "
inp[] &= number substr s$ i 1
.
r
b = r div 3 * 3 + c div 3
row[r * 10 + dig] = 1▼
col[c * 10 + dig] = 1▼
box[b * 10 + dig] = 1▼
.
▲ if dig > 0
▲ r = (pos - 1) div 9
▲ b = r div 3 * 3 + c div 3
▲ row[r * 10 + dig] = 1
▲ col[c * 10 + dig] = 1
▲ box[b * 10 + dig] = 1
▲ .
.
call init
#
for i = 1 to 81
write grid[i] & " "
if i mod 3 = 0
write " "
.
if i mod 9 = 0
print ""
.
if i mod 27 = 0
print ""
.
.
.
#
while grid[pos] <> 0
pos += 1
.
if pos > 81
# solved
call display
break 1
.
r = (pos - 1) div 9
c = (pos - 1) mod 9
b = r div 3 * 3 + c div 3
r *= 10
c *= 10
b *= 10
for d = 1 to 9
if row[r + d] = 0 and col[c + d] = 0 and box[b + d] = 0
grid[pos] = d
row[r + d] = 1
col[c + d] = 1
box[b + d] = 1
call solve pos + 1
row[r + d] = 0
col[c + d] = 0
box[b + d] = 0
.
.
grid[pos] = 0
.
call solve 1
|