Sudoku: Difference between revisions
Content added Content deleted
m (→{{header|FutureBasic}}: remove 'dim as' and update millisecond timer) |
m (→{{header|FutureBasic}}: remove 'dim as') |
||
Line 5,157: | Line 5,157: | ||
First is a short version: |
First is a short version: |
||
<syntaxhighlight lang="futurebasic"> |
<syntaxhighlight lang="futurebasic"> |
||
include "NSLog.incl" |
|||
include "Util_Containers.incl" |
include "Util_Containers.incl" |
||
begin globals |
begin globals |
||
container gC |
|||
end globals |
end globals |
||
BeginCDeclaration |
BeginCDeclaration |
||
short solve_sudoku(short i); |
short solve_sudoku(short i); |
||
short check_sudoku(short r, short c); |
short check_sudoku(short r, short c); |
||
CFMutableStringRef print_sudoku(); |
CFMutableStringRef print_sudoku(); |
||
EndC |
EndC |
||
BeginCFunction |
BeginCFunction |
||
short sudoku[9][9] = { |
short sudoku[9][9] = { |
||
{3,0,0,0,0,1,4,0,9}, |
{3,0,0,0,0,1,4,0,9}, |
||
{7,0,0,0,0,4,2,0,0}, |
{7,0,0,0,0,4,2,0,0}, |
||
{0,5,0,2,0,0,0,1,0}, |
{0,5,0,2,0,0,0,1,0}, |
||
{5,7,0,0,4,3,0,6,0}, |
{5,7,0,0,4,3,0,6,0}, |
||
{0,9,0,0,0,0,0,3,0}, |
{0,9,0,0,0,0,0,3,0}, |
||
{0,6,0,7,9,0,0,8,5}, |
{0,6,0,7,9,0,0,8,5}, |
||
{0,8,0,0,0,5,0,4,0}, |
{0,8,0,0,0,5,0,4,0}, |
||
{0,0,6,4,0,0,0,0,7}, |
{0,0,6,4,0,0,0,0,7}, |
||
{9,0,5,6,0,0,0,0,3}, |
{9,0,5,6,0,0,0,0,3}, |
||
}; |
}; |
||
⚫ | |||
short check_sudoku( short r, short c ) |
short check_sudoku( short r, short c ) |
||
{ |
|||
⚫ | |||
⚫ | |||
⚫ | |||
{ |
{ |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
for (i = 0; i < 9; i++) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
} |
|||
⚫ | |||
{ |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
for (sudoku[r][c] = 9; sudoku[r][c] > 0; sudoku[r][c]--) |
|||
{ |
{ |
||
if ( |
if (i != c && sudoku[r][i] == sudoku[r][c]) return 0; |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
} |
} |
||
return |
return -1; |
||
} |
} |
||
⚫ | |||
⚫ | |||
{ |
{ |
||
short |
short r, c; |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
r = i / 9; |
|||
c = i % 9; |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
if ( solve_sudoku(i) ) return -1; |
|||
} |
|||
⚫ | |||
⚫ | |||
} |
|||
⚫ | |||
{ |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
{ |
|||
for (j = 0; j < 9; j++) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
} |
|||
EndC |
EndC |
||
Line 5,244: | Line 5,243: | ||
toolbox fn print_sudoku() = CFMutableStringRef |
toolbox fn print_sudoku() = CFMutableStringRef |
||
short solution |
|||
CFMutableStringRef cfRef |
|||
gC = " " |
gC = " " |
||
Line 5,256: | Line 5,255: | ||
print : print "Sudoku solved:" : print |
print : print "Sudoku solved:" : print |
||
if ( solution ) |
if ( solution ) |
||
gC = " " |
gC = " " |
||
cfRef = fn print_sudoku() |
cfRef = fn print_sudoku() |
||
fn ContainerCreateWithCFString( cfRef, gC ) |
fn ContainerCreateWithCFString( cfRef, gC ) |
||
print gC |
print gC |
||
else |
else |
||
print "No solution found" |
print "No solution found" |
||
end if |
end if |
||