使用javascript动态生成数独棋盘表

2024-02-15

我正在尝试使用此脚本生成数独板:

问题是我不知道如何验证在列和正方形上生成唯一的数字。

实际上只是仅在行上验证和生成唯一数字。

这是该代码:

function generate(count, values) {
return Array.apply(null, { length: count }).map(function () {
    var r = [],
        array = values.slice();
    while (array.length) {
        r.push(array.splice(Math.floor(Math.random() * array.length), 1)[0]);
    }
    return r;
});
};

var myStringArray = generate(9, [1, 2, 3, 4, 5, 6, 7, 8, 9]);

Array.from(document.getElementsByClassName('cell')).forEach(function(e, i){
  var y = Math.floor(i/myStringArray.length);
  var x = i % myStringArray.length;
  e.textContent = myStringArray[y][x];

});
.container{
    min-height: 100vh;
    width: 100%;
    display: flex;
    align-items : center;
    justify-content : center;
    margin-bottom: 0;
}

.table {
    display:table;
    border: 2px solid #444;
    border-collapse: collapse;
    position: relative;
}
.row {
    display:table-row;
    position: relative;
    z-index:-1;
}
.cell {
    display:table-cell;
    padding:8px;
    border: 1px solid #ff0000;
    text-align: center;
}
.cell:nth-child(3), .cell:nth-child(6){border-right: 5px solid #555; } /*vertical*/
.row:nth-child(3) .cell, .row:nth-child(6) .cell{border-bottom: 5px solid #555;}  /*horizontal*/

.header {
text-align:center;
  position: relative;
}

.header {
 counter-increment: colno;                
}
.header::before {
  content: counter(colno); 
  position: absolute;
  top: -30px;
  font-weight:bold;
    color: #777;
}
.row:nth-child(n+1) {
    counter-increment: rowno;                
}
.row:nth-child(n+1)::before{
  content: counter(rowno); 
  position: absolute;
  left: -30px;
  top:10px;
  font-weight:bold;
  color: #777;
}
<div class="container">
<div class="table">
  <div id="mytab1" class="row">
    <span class="cell header">***</span>
    <span class="cell header">***</span>
    <span class="cell header">***</span>
    <span class="cell header">***</span>
    <span class="cell header">***</span>
    <span class="cell header">***</span>
    <span class="cell header">***</span>
    <span class="cell header">***</span>
    <span class="cell header">***</span>
  </div>
  <div class="row">
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
  </div>
  <div class="row">
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
  </div>
  <div class="row">
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
  </div>
  <div class="row">
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
  </div>
  <div class="row">
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
  </div>
  <div class="row">
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
  </div>
  <div class="row">
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
  </div>
  <div class="row">
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
    <span class="cell">***</span>
  </div>
  </div>
</div>

请访问小提琴here https://jsfiddle.net/707bshLy/12/

感谢你的帮助, 谢谢


您将需要回溯,因为向数独板添加数字可能不会立即违反任何规则,但稍后会导致矛盾。如果您解决任何唯一解数独问题并任意将任何数字放置在任何位置,您一定会遇到这种情况。

我建议你调查一下跳舞链接 https://arxiv.org/abs/cs/0011047算法。您可以轻松地将数独表述为集合覆盖问题,并且该算法可以找到解决方案(如果存在)。对于完全空的板子,必须有一个解决方案。如果您想获得随机结果,请对矩阵进行随机化。

还调查所有其他数独标记的问题 https://stackoverflow.com/questions/tagged/sudoku?sort=votes,因为您不是第一个尝试生成此类板的人,并且从一种语言翻译成另一种语言并不会真正改变游戏太多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用javascript动态生成数独棋盘表 的相关文章

  • 通过纯 JavaScript 获取 div 的第 n 个子元素

    我有一个名为 myDiv 的 div 元素 我怎样才能得到 myDiv 的第n个孩子DOM https en wikipedia org wiki Document Object Model操纵 Markup function reveal
  • 如何在 mongodb 聚合管道中使用 Javascript 对象?

    我有一个 JS 对象norm我想在 mongo 聚合管道中使用它 如下所示 var norm 1 1 2 1 16 3 1 413 4 1 622 5 1 6 6 1 753 7 3 001 8 2 818 9 3 291 10 2 824
  • jquery.validate:多个远程规则

    我计划使用两个远程规则验证单个文本字段 更多这样的 form validate rules remote url1 php remote url2 php messages remote Error1 remote Error2 这可能吗
  • jQuery 可以操作插入的元素吗?

    我是 jQuery 的新手 我认为 jQuery 可以操作由代码添加的元素是合理的 但我发现现在还不能 function addVideo click function publisher append div div
  • 如何在 google.maps.event.addListener 中使用它

    以下示例有效 但是当我尝试传递参数并使用this在该功能不起作用 Working google maps event addListener markers i click showInfoWindow function showInfoW
  • 在自动完成上添加 jQuery 延迟

    我正在尝试为应用程序创建 jQuery 自动完成 search input on keyup function search this val autocomplete div autocomplete get ajax search se
  • fadeOut() 和slideUp() 同时进行?

    我已经发现jQuery 淡出然后滑动 https stackoverflow com questions 734554 jquery fadeout then slideup这很好 但不是那个 我怎么能够fadeOut and slideU
  • 如何在 JavaScript 中将变量的内容写入文件[重复]

    这个问题在这里已经有答案了 可能的重复 firefox 如何启用本地 JavaScript 来读取 写入我的 PC 上的文件 https stackoverflow com questions 2846045 firefox how to
  • 验证假名输入

    我正在开发一个允许用户输入日语字符的应用程序 我试图想出一种方法来确定用户的输入是否是日语假名 平假名 片假名或汉字 应用程序中的某些字段不适合输入拉丁文文本 我需要一种方法将某些字段限制为仅限汉字或仅限片假名等 该项目使用UTF 8编码
  • 修改 Twitter 帖子上可编辑 Div 的内容

    我正在编写一个 chrome 扩展 它可以帮助用户在 Twitter 上输入内容 当在 twitter 上写推文时 twitter 会打开一个可编辑的 div 容器 当用户输入内容时 twitter 大概正在使用某些网络框架 会生成子 di
  • 如何在具有相同值的下拉菜单上触发 jQuery 更改事件

    即使用户选择相同的值 如何每次都触发 jQuery 更改事件 我需要刷新效果 例如如果用户选择Lawyer它会发出警报hello然后用户再次选择Lawyer从下拉菜单中 它应该发出警报hello 我怎样才能实现它 以下是代码 jQuery
  • Riak 在 MapReduce 查询中失败。使用哪种配置?

    我正在与 riak riak js 结合开发一个 nodejs 应用程序 并遇到以下问题 运行此请求 db mapreduce add logs run 正确返回存储在存储桶日志中的所有 155 000 个项目及其 ID logs 1GXt
  • 嵌套 DIV 的类似斑马的 CSS 样式

    我嵌套了 DIV 元素 但我不知道嵌套的级别 我需要每个都有与其父级不同的背景 创建类似斑马的颜色 我只使用两种背景 深色和白色 效果需要类似于在容器中设置奇数和偶数子级的样式 但在我的例子中 子级是嵌套的 我可以使用每个嵌套元素的规则来做
  • AngularStrap 工具提示禁用我的自定义指令

    我正在尝试让 bs tooltip AngularStrap 指令与我自己的名为 checkStrength 的自定义指令一起使用 该指令检查密码的强度 单独使用这些指令中的任何一个时 它们都可以正常工作 但不能一起工作 This http
  • Angularjs : $locationProvider.hashPrefix("!") ;

    我想将网址显示为 www test com 因为我正在使用 locationProvider hashPrefix 但它显示网址为 www test com 我想 哈希之前而不是哈希之后 Thanks var app angular mod
  • 如何使用 jQuery 单击特定链接时打开引导导航选项卡的特定选项卡?

    我是 jquery 和 bootstrap 的新手 所以请考虑我的错误 我已经创建了一个用于登录和注册的 bootstrap 模式 它包含两个导航选项卡 称为登录和注册 我有两个按钮可以弹出相同的模态窗口 但在模态窗口内显示不同的选项卡 每
  • 在javascript中创建图像的缩略图方块(不丢失纵横比)

    我正在制作一个客户端拖放文件上传脚本作为书签 在上传之前 我使用 File API 将图像读取为 base64 格式并将其显示为缩略图 This is how my thumbnails look like I want them to l
  • 绘制多边形

    我正在使用 Google Maps API V3 根据路径绘制多边形 该路径是随机未排序坐标点 LatLng 的数组 这会产生以下形状 Polylines intersect Problem 由于多边形的形状取决于路径中点的顺序 因此如何对
  • 使圆圈与 d3.js 上的多线匹配相同的颜色过滤?

    我有一个多线图 当按每种水果过滤时会更新 每条线条颜色对应不同的销售年份 在 的帮助下Shashank https stackoverflow com users 5569282 shashank 每个数据点线上的圆圈已添加到组中 而不是直
  • 区分 NaN 输入和输入类型为“number”的空输入

    我想使用 type number 的表单输入 并且只允许输入数字

随机推荐

  • 打开工作簿时关闭 Excel 后台错误检查

    我有一个 Excel 工作簿 里面有很多绿色的 错误检查 三角形 有什么方法可以使用 Excel VBA 在打开工作簿时关闭此功能 我认为这就是您正在寻找的 Application ErrorCheckingOptions Backgrou
  • Mongodb 聚合框架解释

    MongoDB 中的聚合框架有解释函数吗 我在文档中看不到它 如果没有 是否有其他方法可以检查查询在聚合框架内的执行情况 我知道你只是做 db collection find explain 但是使用聚合框架时出现错误 db collect
  • 使用 OraOLEDB 提供商部署应用程序

    我开发了一个使用Delphi 7 ADO和ORACLE的应用程序 我使用的提供程序是OraOLEDB 我需要使用这个提供程序 因为BLOB字段支持 现在我想与提供商一起分发此应用程序 我在网上搜索下载甲骨文提供商 http www orac
  • 使用 LLVM pass 添加内在函数

    我使用 LLVM 通道向输入代码添加了一个内在函数 我能够看到内部调用 但我无法弄清楚如何将代码编译到我的目标架构 x86 64 我正在运行以下命令 clang llvm config ldflags libs all ff s o foo
  • GNU 编译器优化

    我对编译器了解不多 但知道它们足够复杂和智能 可以优化您的代码 假设我的代码如下所示 string foo bar for int i 0 i lt foo length i some code that does not modify t
  • 从 Rails 应用程序(Word、PDF、Excel 等)搜索附件

    我在 Stack Overflow 上发表的第一篇文章 请温柔一点 我即将为客户启动一个新的 Ruby on Rails 3 1 项目 他们的要求之一是有一个搜索引擎 该引擎将索引大约 2 000 个文档 这些文档是 PDF Word Ex
  • 让 TortoiseSVN 将文件的修改时间设置为最新修订的时间戳

    我似乎记得能够得到乌龟SVN http en wikipedia org wiki TortoiseSVN在执行更新时将文件的上次修改时间戳设置为修订版的时间戳 因此 如果有人五天前提交了一个文件并且我更新了它 则修改后的时间戳将是五天前
  • 如何在没有密码的情况下使用paramiko连接到远程服务器?

    我正在用 Python 编写一个脚本 需要连接到remote server使用 SSH 并移动file from remote server to host server 我需要在没有密码的情况下执行此操作 因为它需要适用于任何远程服务器和
  • Varnish:清除说它有效,但不会删除旧内容

    我正在 Digital Ocean Ubuntu VM 上运行一个独立的 varnish 实例 它基本上工作正常 该设置用于承担位于其他地方的旧 WordPress 服务器的负载 这很有效 但我很难清除内容 当谈论清除时 我的意思是使 UR
  • 使用 SWIG,如何将 C++ void func(Class& out) 包装为 C# Class func()?

    不幸的是 SWIG 的文档非常难以解析 而且在线示例似乎很少 所以我来到这里 假设 C 函数对类类型使用以下典型返回样式 void func Class out 使用 SWIG 这个函数应该像这样用 C 包装 Class func 根据我的
  • 是否有使用 C# + ASP.NET 实现国际化的基本教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何调试 CMakeLists.txt 文件?

    我该如何调试CMakeLists txt文件 至少做诸如列出变量之类的事情 而不仅仅是使用the message command https cmake org cmake help latest command message html
  • 如何修复 C++ 中的“对 Array::Array(unsigned long) 的未定义引用”? [复制]

    这个问题在这里已经有答案了 我有一个用于对 char 数组进行排序的类 其中一个构造函数采用参数 size t 长度 当我向它传递 int 类型的长度并尝试编译时 出现错误 driver cpp text 0x2c 对 Array Arra
  • 如何使用 CMake 添加额外的 plist 属性?

    我正在尝试添加该项目
  • React-Native 中的 Alt @decorators

    我正在使用Alt http alt js org 带有 React Native 的库 Flux 实现 我真的很喜欢 alt utils decorators 和 alt utils connectToStores 但我无法使用这些 dec
  • Chainlink节点:交易待处理时该怎么办?

    我有一个 chainlink 节点 并且有些交易似乎被卡住了 如何修复待处理的传出确认 大多数情况下 您没有使用 Gas 为您的 chainlink 节点账户提供资金 转到您的配置并获取ACCOUNT ADDRESS并将 ETH 发送到该地
  • 代数类型数据构造函数的“模式匹配”

    让我们考虑一个具有许多构造函数的数据类型 data T Alpha Int Beta Int Gamma Int Int Delta Int 我想编写一个函数来检查是否使用相同的构造函数生成两个值 sameK Alpha Alpha Tru
  • 阿克曼函数的用途?

    在我大学的离散数学课程中 老师向学生展示了阿克曼函数 http en wikipedia org wiki Ackermann function并指派学生在纸上开发该函数 除了作为递归优化的基准之外 阿克曼函数还有任何实际用途吗 是的 反
  • 如果测试失败如何停止 TFS 构建?

    如果冒烟测试失败 如何停止 TFS 2013 构建 例如 我有两组测试 冒烟和回归 如果冒烟测试失败 我想让 TFS Build 停止 有这个参数吗 Thanks None
  • 使用javascript动态生成数独棋盘表

    我正在尝试使用此脚本生成数独板 问题是我不知道如何验证在列和正方形上生成唯一的数字 实际上只是仅在行上验证和生成唯一数字 这是该代码 function generate count values return Array apply nul