数独生成题目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=table[0]..","

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==num[row*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==num[i1*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 num[i]~=0 then

return setN(i+1)

else

local randOrder,i1={},0

for i1=0,9 do

randOrder[i1]=i1

end

for i1=1,9 do

local r=math.random(1,9)

local t1=randOrder[r]

randOrder[r]=randOrder[i1]

randOrder[i1]=t1

end

for i1=1,9 do

if isLegal(i,randOrder[i1]) then

num[i]=randOrder[i1]

if setN(i+1) then

return true

end

end

end

end

num[i]=0

return false

end

--获取随机数独

local function getNum()

math.randomseed(os.time())

local i1=0

for i1=0,81 do

num[i1]=0

end

setN(0)

return num

end

local function run()

num=getNum()

print("随机生成数独")

print_board(num)

for j1=0,80 do nums[j1]=num[j1] end

cl={}

for j1=0,80 do

j2=math.random(1,pel)

if j2<=p*pel then

cl[j1]=nums[j1]

--num[j1]=0

else

cl[j1]=0

num[j1]=0

end

end

print("生成题目")

print_board(num)

end

run()

相关推荐
CoovallyAIHub25 分钟前
Moonshine:比 Whisper 快 100 倍的端侧语音识别神器,Star 6.6K!
深度学习·算法·计算机视觉
CoovallyAIHub2 小时前
速度暴涨10倍、成本暴降6倍!Mercury 2用扩散取代自回归,重新定义LLM推理速度
深度学习·算法·计算机视觉
CoovallyAIHub2 小时前
实时视觉AI智能体框架来了!Vision Agents 狂揽7K Star,延迟低至30ms,YOLO+Gemini实时联动!
算法·架构·github
CoovallyAIHub2 小时前
开源:YOLO最强对手?D-FINE目标检测与实例分割框架深度解析
人工智能·算法·github
CoovallyAIHub2 小时前
OpenClaw:从“19万星标”到“行业封杀”,这只“赛博龙虾”究竟触动了谁的神经?
算法·架构·github
刀法如飞2 小时前
程序员必须知道的核心算法思想
算法·编程开发·算法思想
悟空聊架构3 小时前
基于KaiwuDB在游乐场“刷卡+投币”双模消费系统中的落地实践
数据库·后端·架构
IvorySQL3 小时前
PostgreSQL 技术日报 (3月4日)|硬核干货 + 内核暗流一网打尽
数据库·postgresql·开源
徐小夕4 小时前
pxcharts Ultra V2.3更新:多维表一键导出 PDF,渲染兼容性拉满!
vue.js·算法·github
CoovallyAIHub5 小时前
OpenClaw一脚踩碎传统CV?机器终于不再只是看世界
深度学习·算法·计算机视觉