数独生成器算法[关闭]

2024-06-05

我制作了一个生成数独的算法,但效率非常低。每个谜题都需要几分钟才能生成。所以现在我正在尝试以最佳方式重新编写它。但我遇到了一些问题,需要帮助。

有两种方法:

  1. 从空白网格开始并添加数字,然后检查它是否可解。
  2. 创建包含所有 81 个数字的完整有效网格,然后删除,直到我们对剩余数字的数量感到满意并且仍然可以解决为止。

首先我使用了第一种方法,但现在我将使用第二种方法,因为我认为它更有效(我们从保证可以解决的有效谜题开始)。我是对的,第二种方法更好?

当我尝试生成完整填充的网格时,我遇到了困难。我的算法是:

  • 为每个单元格设置候选者。最初它们是数字 1 到 9。
  • 选择没有值的随机单元格。
  • 从该单元格中选择随机候选并将其指定为单元格值。其他候选人被丢弃。
  • 现在,对于与指定单元格相对应的每一行、单元格和正方形,我从这些候选单元格中删除单元格的值,因此每个数字在行/列/正方形中都是唯一的
  • Repeat

该技术保证随机网格没有重复的数字。然而,大多数时候,当我不违反任何安置规则时,就会发生冲突——比如所有候选人都被删除的空单元格等,我需要重新开始。是否有更优雅/有效的方法来用数字填充整个网格而不违反放置规则并且仍然是随机数字?


您看过现有的算法和/或代码吗?

查看https://www.sudokuwiki.org/Sudoku_Creation_and_Grading.pdf https://www.sudokuwiki.org/Sudoku_Creation_and_Grading.pdf算法描述,以及 Peter Norvig 的文章http://norvig.com/sudoku.html http://norvig.com/sudoku.html.

Python 中有一些实现。到目前为止,我从未见过已发布的 C# 解决方案。

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

数独生成器算法[关闭] 的相关文章

  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • Java中的对象池模式

    所以我实现了自己的对象池模式 它工作得很好并且符合预期 从列表中返回我的 老师 对象 并在没有对象时创建它们 我的问题 返回的对象 Teacher 然后需要被转换为它的专门子类之一 例如 生物老师 获得这种功能的最佳方法是什么 编辑 抱歉
  • 先增后减的最长子序列

    我正在尝试解决以下问题 元素值先减小后增大的序列称为V序列 在有效的 V 序列中 递减臂中应至少有一个元素 递增臂中至少应有一个元素 例如 5 3 1 9 17 23 是一个有效的 V 序列 在递减臂中具有两个元素 即 5 和 3 在递增臂
  • 检测 JSON 数组中没有重复项的最快正确方法是什么?

    我需要检查数组中的所有项目是否都是唯一的serde json Value 由于该类型没有实现Hash我想出了以下解决方案 use serde json json Value use std collections HashSet fn is
  • 用于将分层平面数据(带 ParentID)转换为带缩进级别的排序平面列表的算法

    我有以下结构 MyClass guid ID guid ParentID string Name 我想创建一个数组 其中包含按层次结构中应显示的顺序排列的元素 例如 根据它们的 左 值 以及将 guid 映射到缩进级别的散列 例如 ID N
  • 查找top-k元素的平均时间复杂度

    考虑在一组 N 个独立且同分布的浮点值中查找前 k 个元素的任务 通过使用优先级队列 堆 我们可以对所有 N 个元素进行一次迭代 并通过以下操作维护一个 top k 集合 如果元素 x 比堆头 更差 丢弃 x 复杂度 O 1 如果元素 x
  • 需要创建一个“选择你自己的冒险”类型的指南 - 最佳使用方法

    基本上需要询问用户一系列问题并收集信息 每个问题都可能对以后的不同问题产生影响 另一个例子是涡轮税的网络界面 在某些 上回答 是 可能会引发未来的问题 似乎这在软件中是一个相当常见的问题 所以我想我是在问是否有任何现有的解决方案 设计模式可
  • 按字母/字典顺序排列的两个字符串的平均值

    假设您采用字符串 a 和 z 并按字母顺序列出它们之间的所有字符串 a b c x y z 取这个列表的中点 你就会找到 m 所以这有点像取这两个字符串的平均值 您可以将其扩展到具有多个字符的字符串 例如 aa 和 zz 之间的中点将位于列
  • 滑动窗口最小算法

    这是一个家庭作业问题 设 A 是一个整数数组和整数 K 窗口大小 当窗口滑过 A 时 生成在窗口中看到的最小值的数组 M 我发现一篇文章 http home tiac net cri 2001 slidingmin html有这个问题的解决
  • 将平面表解析为树的最有效/优雅的方法是什么?

    假设您有一个存储有序树层次结构的平面表 Id Name ParentId Order 1 Node 1 0 10 2 Node 1 1 1 10 3 Node 2 0 20 4 Node 1 1 1 2 10 5 Node 2 1 3 10
  • 使用 O(1) 辅助空间迭代二叉树

    是否可以在 O 1 辅助空间中迭代二叉树 不使用堆栈 队列等 或者这已被证明是不可能的 如果可以的话 怎样才能做到呢 编辑 我得到的关于如果有指向父节点的指针就可能实现这一点的响应很有趣 我不知道可以做到这一点 但取决于您如何看待它 这可以
  • 计算序列 1,3,8,22,60,164,448,1224... 的第 n 项? [复制]

    这个问题在这里已经有答案了 可能的重复 我想以 Order 1 或 nlogn 的顺序生成序列 1 3 8 22 60 164 的第 n 项 https stackoverflow com questions 11301992 i want
  • 如何编写一个简单的版本控制系统?

    我想做一个简单的版本控制系统 但我不知道如何构建我的数据和代码 这是一个简短的例子 用户登录 User has two options when uploading a file 提交新文件 提交文件的新版本 用户应该能够看到树 版本不同
  • 哪种算法可以解决我的婚礼餐桌问题?

    我的婚礼有 x 位客人 有 y 张桌子 有 z 个座位 客人A可以与客人B同桌 客人C不能与客人D同桌 给定所有客人之间所有连接的数据集 是否有已知的算法可以解决此类问题 我确信这种问题有一个抽象的父问题 称为 问题 x 或其他问题 或者它
  • 转置矩阵存储在一维数组中,无需使用额外的内存[重复]

    这个问题在这里已经有答案了 可能的重复 矩阵的就地转置 https stackoverflow com questions 9227747 in place transposition of a matrix 最近参加了技术笔试 通过以下问
  • 将数字 1 排列在二维矩阵中

    给定二维矩阵的行数和列数 初始矩阵所有元素均为0 给定每行中应该出现的 1 的数量 给定每列中应该出现的 1 的数量 确定是否可以形成这样的矩阵 例子 Input r 3 c 2 no of rows and columns 2 1 0 n
  • Welzl 算法的迭代版本

    我正在使用 Welzl 算法来查找点云的最小外接圆 2d 或最小外接球体 3d 不幸的是 该算法具有非常高的递归深度 即输入点数 这个算法有迭代版本吗 我找不到任何并且不知道如何将递归更改为循环 我发现了一些迭代的最小包围圆 球算法 但它们
  • 高效编写航空公司路由算法

    Given 航班数据库 出发城市 到达城市 出发时间 到达时间 问题 如果出发时间不重要 那么在两个城市之间列出服务的最有效算法是什么 考虑到我们想要最小化中途停留时间 但仍高于标称最小值 即 20 分钟 并最小化中途停留次数 如果有直达航
  • 带提示的二分查找

    我有一个简单的std vector包含一些已排序的数字 按升序 我想查找一个元素 到目前为止我使用 return std lower bound vec begin vec end needle Where needle是我寻找的元素 然而
  • 优化完美平方问题,类似于Python中的硬币找零

    我这里有一个硬币兑换的解决方案 python 中的 leetcode 硬币兑换 https stackoverflow com questions 69517078 coin change leetcode in python 因为完全平方

随机推荐

  • 检测正在插入的设备

    我希望能够检测设备是否已插入 我希望能够像查询连接状态一样进行查询 这可能吗 或者我是否需要创建一个监听电池事件的广播接收器 显然是ACTION BATTERY CHANGED http developer android com refe
  • 数据表在按钮单击后初始化表(ajax,jquery)

    我在加载数据表对象时遇到问题 当我在页面加载时初始化并填充表时 它可以正常工作 下面的代码在页面重新加载时完美运行
  • 更少的编译错误

    我正在使用 Incident57 的 CodeKit 预处理器来编译一系列 less 文件 这些文件将被导入并缩小为一个名为 template css 的 CSS 文件 然而 在进行一些编辑后 我不知道是什么编辑导致了这个 我开始得到non
  • 成对散点图;一对多[重复]

    这个问题在这里已经有答案了 有没有一种简洁的方法来创建pairs仅将一个变量与许多其他变量进行比较的图 换句话说 我可以只绘制标准的一行或一列吗 pairs不使用循环的散点图矩阵 融化你的数据 然后使用带有facet的ggplot libr
  • Ember.js - 从计算属性返回 unicode 字符

    我试图从计算属性返回 unicode 字符 但是 不断逃脱 amp 我什至尝试过像这样返回 Handlebars SafeString return new Ember Handlebars SafeString 61573 产生相同的结果
  • 使用主机上的 consul DNS 解析容器

    目标 让 docker 容器使用主机提供的 DNS 主机是在另一个容器中运行的 consul 代理 来访问通过 traefik 反向代理提供的服务 设置 主机 Ubuntu 16 04 2 LTS Registrator 将新容器注册到 c
  • 通过 IP 地址检测 ISP(或/和国家/地区)[重复]

    这个问题在这里已经有答案了 互联网上有很多服务 我们可以找到我们机器的外部 IP 地址 而且这些服务通常提供有关互联网提供商或国家 地区 或两者 的信息 所以我的问题是 如何通过已知 IP 地址以编程方式获取此类信息 是否有一些公共目录或一
  • 在单个 Visual Studio 会话中打开文件的两个实例

    我有一个文件 xyz cpp 我想在 Visual Studio 中打开此文件的两个实例 顺便说一句 我使用的是 Visual Studio 2005 我为什么要这样做 我想并排比较同一文件的两个部分 我知道解决方法 例如 复制该文件 但问
  • 如何让热模块重新加载在打字稿 monorepo 中工作

    因此 在过去的几天里 我一直在尝试在基于 Typescript React Koa Mongo 的 monorepo 中进行热模块重新加载 但完全徒劳无功 我感觉我的头一直在撞砖墙 HMR 的文档少之又少 几乎互联网上的所有内容都只是par
  • 使用隐式/显式转换而不是构造函数的原因是什么?

    一个例子是 XNamespace ns my namespace 为什么不 XNamespace ns new XNamespace my namespace 使用隐式 显式转换而不是构造函数背后的想法是什么 方便 有这方面的指南吗 方便
  • Breejs:日期未设置为正确的时间

    我注意到 如果从服务器返回的日期属性的值为 2013 07 11T17 11 04 700 则微风会将值更改为 Thu Jul 11 19 11 04 UTC 0200 2013 请注意 现在时间提前了 2 小时 我在保存实体时已经遇到了这
  • pygame 中的精灵问题

    我正在制作一个带有lvls的2d游戏 在 4 级时 应该出现一个盒子 通过 4 级后 它应该消失并从盒子列表中删除 它已从框列表中删除 但仍显示在屏幕上 请帮我解决它 我正在制作一个带有lvls的2d游戏 在 4 级时 应该出现一个盒子 通
  • python 3+ 的缓冲函数

    我试图使用 vtk show 打开一个 vtk 窗口 但是每次我这样做时 我的 Ipython 控制台都会崩溃 显然这是因为 Ipython 无法显示外部窗口 而这正是 vtk show 所做的 我在谷歌上搜索了一个解决方案 但它是为 py
  • 使用 Ninject 2 在基本控制器中进行属性注入

    我的 Global aspx 中有以下代码 protected override void OnApplicationStarted AreaRegistration RegisterAllAreas RegisterRoutes Rout
  • OpenVAS 总是报告没有结果 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我已经在 ubuntu 上设置了 openvas 并且它似乎可以工作 但是我尝试的每次扫描都返回 0 结果 I used openvas c
  • 使用 spring-data-neo4j 时如何启用 neo4j webadmin?

    我正在启动一个新项目使用 REST 访问 Neo4j 数据 http spring io guides gs accessing neo4j data rest 例子 该示例使用嵌入式数据库而不是独立的 neo4j 服务器 但我想使用 Ne
  • 在子目录中设置 WordPress 时出现错误的 wp-admin 重定向

    我在 docker 容器中设置了 wordpress 使用 nginx 反向代理转发所有位置请求 blog到那个 docker 容器 问题是登录 wp admin 后 它重定向到domain wp admin 代替 domain blog
  • 无法通过Delphi替换Word应用程序中的页脚文本

    我正在尝试替换页脚中的文本 我使用以下代码 通过它我可以替换正常内容 正文 但不能替换页脚 页眉中的内容 myWinWordApp CreateOLEObject Word Application myWinWordApp visible
  • Spark - 构建时出现 scala 初始化错误

    我正在尝试在我的 scala 应用程序中使用 Spark 这是我正在使用的 Spark 依赖项
  • 数独生成器算法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我制作了一个生成数独的算法 但效率非常低 每个谜题都需要几分钟才能生成 所以现在我正在尝试以最佳方式重新编写它 但我遇到了一些问题 需