数独求解与生成
转换所有处理都在浏览器本地完成,数据不上传服务器
输入
把文件拖到这里可直接载入
输出
三种用法:求解、校验、生成新题。求解用回溯加候选数位掩码,并可选列出每一步用了什么策略(唯一候选数 / 隐性唯一 / 试填回溯)。校验会指出同一行、列、宫里重复的数字具体出现在哪几行几列,并判断是唯一解、多解还是无解。生成从完整解里随机挖空,每挖一个都验证仍唯一,所以给出的题保证只有一个答案。 ⚠️ 生成走 lib/random.ts 的随机源,绝不用 Math.random;填一个种子就能复现同一道题。 全部在浏览器本地完成,不联网、不上传。
功能
- 粘贴 9 行数独即可求解,. 或 0 表示空格,也认 81 字符紧凑串
- 可选列出解题步骤,并标明每一步用的是哪种策略
- 校验盘面:指出重复数字所在的行、列、宫与具体格子
- 判断唯一解、多解(至少 2 个)还是无解,数到 2 就停、不穷举
- 生成新题,从完整解随机挖空且每题验证唯一解
- 三档难度:简单 / 中等 / 困难
- 填一个种子即可复现同一道题
- 非法输入与重复数字会指到具体第几行第几列
- 全部在浏览器本地完成,数据不上传
使用方法
- 选模式:求解 / 校验 / 生成新题
- 求解或校验:粘贴 9 行数独,每行 9 格,. 或 0 表示空格
- 生成:选难度,需要时可填一个种子
- 结果实时出现,可逐行复制
常见问题
- 怎么判断一道题是不是唯一解?
- 用回溯搜索,但数到 2 个解就停 —— 空盘约有 6.67×10²¹ 个解,穷举完是几个世纪的事。对「是不是唯一」这个问题,0 / 1 / 至少 2 三种结论已经够了,所以不必把解全部列出。
- 生成的题为什么保证唯一解?
- 生成时从完整解里随机挖空,每挖掉一个数字就立刻用上面的计数器验证「是否仍唯一解」,不唯一就把这个格子填回去。没有这一步的话,用户会碰到「看起来能做、其实有多个答案」的题。
- 解题步骤里的三种策略是什么意思?
- 唯一候选数:这一格只剩一个可能的数字。隐性唯一:某个数字在这一行(或列、宫)里只可能落在一格。试填(回溯):两种直接法都推不动了,先假设一个数往下走,走不通再退回来。
- 为什么求解时输入有重复数字会直接报错?
- 因为带重复的盘面根本无解,继续算只会得到一个「无解」的结论,而真正的问题是那几个重复的格子。所以工具直接指出重复出现在第几行第几列。
相关工具
抛硬币
生成器一次抛 1–1000 枚硬币,正反面文字可自定义,逐枚给出结果并统计正反面次数与占比,可填种子复现。全部在浏览器本地完成,不联网。
随机数生成
生成器生成随机整数或小数:范围、个数、小数位数可调,还能去重、排序、按二/八/十六进制输出。随机源取自浏览器的加密随机数。
数学表达式计算
网络逐行求值数学表达式:优先级与括号、幂与开方、三角与对数函数,还能定义变量复用。不使用 eval。
时间戳转换
转换把 Unix 时间戳还原成日期时间,或反过来。秒 / 毫秒 / 微秒 / 纳秒自动识别,支持小数、负数与 Windows FILETIME。全部在浏览器本地完成。
日期计算
转换算两个日期之间相差多少天,或给一个日期加减若干天、周、月。日期用日历挑或直接粘贴,结束日期留空就与今天比较。全部在浏览器本地完成。
进制转换
转换在二、八、十、十六、36、64 进制之间互转,六种结果一次全部给出,19 位的雪花 ID 也能一位不差。全部在浏览器本地完成。