?? ruby4soduku.txt
字號(hào):
Table=Array.new(9)
def getNumber(a)
return nil if a.length==0
sum=a.length*10
l=rand(sum)/10
return a[l]
end
def setTable(i,j)
if Table[i][j].class==Fixnum
0.upto(8) {|pos| Table[i][pos].delete(Table[i][j]) if Table[i][pos].class==Array}
0.upto(8) {|pos| Table[pos][j].delete(Table[i][j]) if Table[pos][j].class==Array}
i1=6 if i<9
i1=3 if i<6
i1=0 if i<3
j1=6 if j<9
j1=3 if j<6
j1=0 if j<3
i1.upto(i1+2) do |i2|
j1.upto(j1+2) do |j2|
Table[i2][j2].delete(Table[i][j]) if Table[i2][j2].class==Array
end
end
end
end
def resetTable
0.upto(80) do |x|
i=x/9
j=x-i*9
if Table[i][j].class==Array
Table[i][j]=[1,2,3,4,5,6,7,8,9]
end
end
0.upto(80) do |x|
i=x/9
j=x-i*9
setTable(i,j)
end
end
def setTableValue(x)
return true if x>80
i=x/9
j=x-i*9
num=getNumber(Table[i][j])
tempa=Table[i][j]
if num==nil
return false
else
Table[i][j]=num
setTable(i,j)
if not setTableValue(x+1)
Table[i][j]=tempa
resetTable
tempa.delete(num)
Table[i][j]=tempa
return setTableValue(x)
else
return true
end
end
end
def initTable
0.upto(8) do |i|
Table[i]=Array.new(9)
end
0.upto(8) do |i|
0.upto(8) do |j|
Table[i][j]=[1,2,3,4,5,6,7,8,9]
end
end
setTableValue(0)
end
def getStr(num)
if num.class==Array
return '-'
end
return num.to_s
end
def showTable
0.upto(8) do |i|
0.upto(7) do |j|
print getStr(Table[i][j])+' '
end
print getStr(Table[i][8])+"\n"
end
end
def cutTable (x)
0.upto(80) do |num|
i=num/9
j=num-i*9
Table[i][j]=Array.new if rand < x
end
end
initTable
cutTable(0.8)
showTable
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -