⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ruby4soduku.txt

📁 ruby解决数独问题
💻 TXT
字号:
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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -