abr*_*rkn 5 c# puzzle algorithm
我正在寻找一个数字益智游戏.为了这个问题,我们假设电路板是一个由4 x 4个正方形组成的网格.(在实际的益智游戏中,这个数字将是1..15)
一个数字可能只在每列中出现一次,在每一行中出现一次,有点像数独,但没有"正方形".
有效:
[1, 2, 3, 4
2, 3, 4, 1
3, 4, 1, 2
4, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
我似乎无法想出一种能够始终生成有效的随机nxn板的算法.
我是用C#写的.
首先阅读我的图形着色算法系列:
http://blogs.msdn.com/b/ericlippert/archive/tags/graph+colouring/
看起来这与你的问题无关,但是当你完成时,你会发现它与你的问题有关.
好了,既然您已经阅读过,那么您就知道可以使用图形着色算法来描述类似Sudoku的谜题,然后解决谜题的特定实例.但显然你可以使用相同的算法来生成谜题.
首先定义完全连接的图形区域.
然后修改算法,以便尝试找到两个解决方案.
现在创建一个空白图表,并将其中一个区域随机设置为随机颜色.尝试解决图表.有两种解决方案吗?然后添加另一种随机颜色.再试一遍.没有解决方案吗?然后备份一个步骤并添加不同的随机颜色.
继续这样做 - 添加随机颜色,当你没有解决方案时回溯,并继续直到你得到一个具有独特解决方案的拼图.而且你已经完成了; 你有一个随机的拼图生成器.