数独生成题目lua脚本

--获取某元素在表中的位置

local function isInside(value,tab)

for a,v in ipairs(tab) do

if v==value then

return a

end

end

return -1

end

local function print_board(table)

local str=table0..","

for k,v in pairs(table) do

if k>0 and k<81 then

if (k+1)%9==0 then str=str..v..",\n"

else str=str..v..","

end

end

end

print(str)

end



--题目,答案

local nums,num={},{}

--游戏设定:显示概率

local p,pel=0.3,100000

--填充是否有效

local function isRowLegal(i,v)

local row,i1=math.floor(i/9),0

for i1=0,8 do

if (v==numrow\*9+i1)and(i~=row*9+i1) then

return false

end

end

return true

end

local function isColLegal(i,v)

local col,i1=i%9,0

for i1=0,8 do

if (v==numi1\*9+col)and(i~=i1*9+col) then

return false

end

end

return true

end

local function isSubLegal(i,v)

local row=math.floor(i/9)

local col=i%9

local x1=math.floor(row/3)*3

local y1=math.floor(col/3)*3

local i1,i2=0,0

for i1=0,2 do

for i2=0,2 do

if (v==num(x1+i1)\*9+y1+i2)and(i~=(x1+i1)*9+y1+i2) then

return false

end

end

end

return true

end

local function isLegal(i,v)

if (not(isRowLegal(i,v)))or(not(isColLegal(i,v)))or(not(isSubLegal(i,v))) then

return false

end

return true

end

--递归填充数字

local function setN(i)

if i==81 then

return true

elseif numi~=0 then

return setN(i+1)

else

local randOrder,i1={},0

for i1=0,9 do

randOrderi1=i1

end

for i1=1,9 do

local r=math.random(1,9)

local t1=randOrderr

randOrderr=randOrderi1

randOrderi1=t1

end

for i1=1,9 do

if isLegal(i,randOrderi1) then

numi=randOrderi1

if setN(i+1) then

return true

end

end

end

end

numi=0

return false

end

--获取随机数独

local function getNum()

math.randomseed(os.time())

local i1=0

for i1=0,81 do

numi1=0

end

setN(0)

return num

end

local function run()

num=getNum()

print("随机生成数独")

print_board(num)

for j1=0,80 do numsj1=numj1 end

cl={}

for j1=0,80 do

j2=math.random(1,pel)

if j2<=p*pel then

clj1=numsj1

--numj1=0

else

clj1=0

numj1=0

end

end

print("生成题目")

print_board(num)

end

run()

相关推荐
空堂与归27 分钟前
用户分群找不到规律?用K-Means聚类算法自动发现数据模式
算法·机器学习·kmeans·聚类
动词ing1 小时前
【C语言】自定义函数+指针入门
c语言·开发语言·算法
重生之后端学习1 小时前
283. 移动零[简单]✅
开发语言·数据结构·算法·leetcode·职场和发展
lilian2331 小时前
Harmony os 技术实战|拼豆制图27:用单字符编码承载 50 张 70×70 图纸
前端·数据库·华为·harmonyos
皮卡丘不断更1 小时前
手机优先的 Personal Ledger:把账目、学习和复盘放到同一个入口
数据库·sqlite·fastapi·开源项目·个人效率
一只小小的芙厨2 小时前
基础数论总结
笔记·学习·算法
动词ing2 小时前
【C语言】结构体+文件基础
c语言·开发语言·数据结构
保卫大狮兄2 小时前
设备管理从台账到报废,完整生命周期一次讲清
数据库·设备管理·设备
数据安全技术观察3 小时前
数据动态脱敏:让脱敏策略跟着数据目录走
大数据·网络·数据库
夜不会漫长3 小时前
C++入门(1)
开发语言·c++·算法