Sudoku Generator
Sudoku 算法
标签(空格分隔): 软工实践
设想:通过第一行,来生成2, 3行的排列,再通过1 - 3 生成4 - 6排列。
2 3 行的生成由上一行生成
公式为$grid[i][j] = grid[i][(j + 3)%9] $
即第二行由第一行向右平移3个位置,第三行由第一行向右平移6个位置。
这样前三行满足:每一行都有1-9,前3个3*3的方块也都有1-9。
例如:
line1: 5 1 2 3 4 6 7 8 9
line2: 3 4 6 7 8 9 5 1 2
line3: 7 8 9 5 1 2 3 4 6
将1 - 3行按顺序分成 3*3的方块
s1: 5 1 2 s2: 3 4 6 s3: 7 8 9
3 4 6 7 8 9 5 1 2
7 8 9 5 1 2 3 4 6
第4 - 9行分别由s1-s3列变换得到
公式为\(grid[i][j] = grid[i-3][j\%3==1?j+2:j-1]\)
经过变换后
s4: 2 5 1 s5: 6 3 4 s6: 9 7 8
6 3 4 9 7 8 2 5 1
9 7 8 2 5 1 6 3 4
s7: 1 2 5 s8: 4 6 3 s9: 8 9 7
4 6 3 8 9 7 1 2 5
8 9 7 1 2 5 4 6 3
最后得到的grid是:
5 1 2 3 4 6 7 8 9
3 4 6 7 8 9 5 1 2
7 8 9 5 1 2 3 4 6
2 5 1 6 3 4 9 7 8
6 3 4 9 7 8 2 5 1
9 7 8 2 5 1 6 3 4
1 2 5 4 6 3 8 9 7
4 6 3 8 9 7 1 2 5
8 9 7 1 2 5 4 6 3
通过4 - 6行的行排列组合&7 - 9行的行排列组合可以组成
\]
\]
Sudoku Generator的更多相关文章
- 第二次作业——个人项目实战(Sudoku)
Github:Sudoku 项目相关要求 利用程序随机构造出N个已解答的数独棋盘 . 输入 数独棋盘题目个数N 输出 随机生成N个 不重复 的 已解答完毕的 数独棋盘,并输出到sudoku.txt中, ...
- 17秋 软件工程 第二次作业 sudoku
2017年秋季 软件工程 作业2:个人项目 sudoku Github Project Github Project at Wasdns/sudoku. PSP Table PSP2.1 Person ...
- 软工实践作业2:个人项目实战之Sudoku
Github:Sudoku 项目相关要求 项目需求 利用程序随机构造出N个已解答的数独棋盘 . 输入 数独棋盘题目个数N(0<N<=1000000). 输出 随机生成N个不重复的已解答完毕 ...
- 关于条件约束问题的无偏差统计——一个偏差控制型生成器(Unbiased Statistics of a Constraint Satisfaction Problem – a Controlled-Bias Generator——by Denis Berthier)
论文地址:https://hal.archives-ouvertes.fr/hal-00641955 Unbiased Statistics of a Constraint Satisfaction ...
- EasyMesh - A Two-Dimensional Quality Mesh Generator
EasyMesh - A Two-Dimensional Quality Mesh Generator eryar@163.com Abstract. EasyMesh is developed by ...
- 轻量级“集合”迭代器-Generator
Generator是PHP 5.5加入的新语言特性.但是,它似乎并没有被很多PHP开发者广泛采用.因此,在我们了解PHP 7对Generator的改进之前,我们先通过一个简单却显而易见的例子来了解下G ...
- .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator
去年,我在一篇文章用原始方法解析复杂字符串,json一定要用JsonMapper么?中介绍了简单的JSON解析的问题,那种方法在当时的环境是非常方便的,因为不需要生成实体类,结构很容易解析.但随着业务 ...
- 深入解析js异步编程利器Generator
我们在编写Nodejs程序时,经常会用到回调函数,在一个操作执行完成之后对返回的数据进行处理,我简单的理解它为异步编程. 如果操作很多,那么回调的嵌套就会必不可少,那么如果操作非常多,那么回调的嵌套就 ...
- Leetcode 笔记 36 - Sudoku Solver
题目链接:Sudoku Solver | LeetCode OJ Write a program to solve a Sudoku puzzle by filling the empty cells ...
随机推荐
- [技术] OIer的C++标准库 : 字符串库<string>
引入 上次我在博客里介绍了OI中可能用到的STL中的功能, 今天我们接着来发掘C++标准库中能为OI所用的部分. 众所周知, OI中经常用到字符串相关的处理, 这时善用字符串库可以使一些操作更加简洁易 ...
- JUnit4在Eclipse中的使用
测试是项目开发中很重要的一环.实际上,建议的项目前期编写过程是:构思-> 编写单元测试代码-> 编写接口->编写实现类-> 测试实现类->编写主类....JUnit是一个 ...
- SecureCRT-转换密钥-Xshell-配置服务-使用xshell登录远程linux服务器
这篇文档不保证正确,仅仅是备份个因为所以,不必当真. SecureCRT和xShell这2个工具功能类似,均可以控制远程服务器模拟并发用户. SecureCRT自带功能可以将私钥转换为xShell可用 ...
- 使用VIEWER.JS进行简单的图片预览
<script src="../res/js/viewer.min.js"></script><script type="text/java ...
- React&Webpack 环境安装
react的安装依赖nodejs,nodejs安装下载可从http://nodejs.org/en/下载 1. 环境安装 1.1 创建lib目录 cd E:\ReactLib 1.2 ...
- How to generate file name according to datetime in bat command
On the command line, note: must copy and paste below lines of code and then execute them one by one: ...
- java异常之后代码执行测试
1.程序代码: public static void main(String[] args) { int[] a = {1,2,3}; for(int i=0;i<4;i++){ System. ...
- ThinkPHP系统变量,常量,序列化,反序列化,缓存
变量的输出: 在模板中输出一个变量有两种形式:{$list.name} {$list[‘name’]} 在模板中可以使用系统变量,以$Think.开头 系统变量:(举例选几个) 获得服务器的IP地址: ...
- adb 安装apk 报错:Failure [INSTALL_FAILED_CPU_ABI_INCOMPATIBLE]
这是因为系统里缺少了 Google Play 市场等各种谷歌服务应用,其实是因为版权问题,从 2.0 版本开始 Genymotion 提供的虚拟设备都已经移除了 Google Apps 以及 AR ...
- 我的Markdown的利器——Markdown Here、有道云笔记、iPic
Markdown逐渐成为大家文章编辑的首选,这里推荐两个比较冷门的Markdown工具. 用什么当做Markdown的主力工具? 网上有很多人推荐的Markdown的工具包括专业的Markdown工具 ...