I've only done sudoku a couple times in the newspaper, but that article is the same way I naturally tried to solve them. (Except I didnt have an eraser both times...)
I just made a sudoku generator in blitz. It only took me a half hour cuz I am super smart!
It fails sometimes, so it just restarts.
I just made a sudoku generator in blitz. It only took me a half hour cuz I am super smart!
It fails sometimes, so it just restarts.
SeedRnd MilliSecs() Type cell Field value Field cantbe[9] Field cants End Type Dim grid.cell(9,9) .top For y=1 To 9 For x=1 To 9 grid(x,y)=New cell Next Next ;draw the lines that make the grid For y=1 To 9 For x=1 To 9 quadx=(x/3*3=x) quady=(y/3*3=y) Rect x*20,y*20,20-quadx,20-quady,0 Next Next Local c.cell Local best.cell For y=1 To 9 For am=1 To 9 ;find the cell on this row that can be the least amount of values best=Null For x=1 To 9 c=grid(x,y) If c\value=0 Then If best=Null Then best=c cx=x ElseIf c\cants>best\cants Then best=c cx=x EndIf EndIf Next If best=Null Then Stop c=best ;test if the cell can't be anything If c\cants=9 Then Cls Delete Each cell Goto top EndIf ;give the cell a random number that it can be Repeat num=Rand(1,9) If c\cantbe[num]=0 Then Exit Delay 9 Forever c\value=num Text cx*20,y*20,c\value ;all in this row now cant be this value For x2=1 To 9 If grid(x2,y)\cantbe[num]=0 Then grid(x2,y)\cantbe[num]=1 grid(x2,y)\cants=grid(x2,y)\cants+1 EndIf Next ;all in this column now cant be this value For y2=y To 9 If grid(cx,y2)\cantbe[num]=0 Then grid(cx,y2)\cantbe[num]=1 grid(cx,y2)\cants=grid(cx,y2)\cants+1 EndIf Next ;all in this quadrant now cant be this value quadx=(cx-1)/3*3+1 quady=(y-1)/3*3+1 For y2=quady To quady+2 For x2=quadx To quadx+2 If grid(x2,y2)\cantbe[num]=0 Then grid(x2,y2)\cantbe[num]=1 grid(x2,y2)\cants=grid(x2,y2)\cants+1 EndIf Next Next Next Next ;For y=1 To 9 ; For x=1 To 9 ; Text x*20,y*20,grid(x,y)\value ; Next ;Next Text 1,1,"done!" WaitKey End