【转】数字华容道怎样才能有解
原文出处:https://www.jianshu.com/p/1c1849d876b2
此文还未仔细研究验证,先mark下:
数字华容道,是在4x4的格子中,依次从左到右,从上到下放置1-15这15个数字。经过一定的随机,必须将这15个数字复原。每个数字只能向相邻的唯一空格移动。难度更高的,格子和数字会更多,比如5x5。
我在开发一个类数字华容道游戏时,发现自己3x3的格子,居然怎么都解不出来。比如:一排1、2、3,二排4、5、6,三排8,7。经过网上查询,才知道完全随机位置的数值华容道仅有50%的概率是有解的。而我就是用的完全随机方式去打乱次序。
网上有两篇文章说的很好,以下是根据这两篇文章的总结。
数字华容道必然有解的前提
首先,要弄清楚一个概念:逆序数。逆序数,即一个数字序列,将其中所有数字依次两两对比,若大数在前,小数在后,那么这就是一对逆序数。这里说到的逆序数,指的是数字序列中逆序数的数量。比如:上文提到的1、2、3、4、5、6、8、7,逆序数只有1个,即8和7。
另外,还有一点要提出来。一般来讲,复原状态(初始状态)的数字华容道,会有一个空格,一般会设置在最末行的右下角。但也可以根据实际的需求,设置在其他行。请留意,初始空格所在的行数,是决定是否有解的一个重要因素。
数字华容道,必然有解,只存在于如下3个细分情形:
若格子列数为奇数,则逆序数必须为偶数;
若格子列数为偶数,且逆序数为偶数,则当前空格所在行数与初始空格所在行数的差为偶数;
若格子列数为偶数,且逆序数为奇数,则当前空格所在行数与初始空格所在行数的差为奇数。
实际的推演涉及到我一时难以彻底理解的数学推算,我只能用浅显的方式来理解这个问题。
为什么?
首先,有解的前提在于:当前空格回到初始空格所在行数时,逆序数一定得是偶数!为什么,我不清楚。
要想把空格移动到初始空格所在行,必须进行若干次上下移动和若干次左右移动。
左右移动,不会改变逆序数;上下移动,若格子列数为奇数,则每次增减偶数个逆序数,若格子列数为偶数,则每次增减奇数个逆序数。
也就是说:
1.格子列数为奇数,怎么移动,都不会改变原始的逆序数。因为奇数加减偶数还是奇数,偶数加减偶数还是偶数。所以,只要保证逆序数是偶数即可,不必关心空格的位置。
2.格子列数为偶数,那么进行奇数次上下移动,会改变其逆序数的奇偶性。所以,如果当前逆序数是偶数,要想有解,就要保证实际上下移动会进行偶数次,也就是说空格所在行与初始空格所在行的差为偶数。
3.同理,若当前逆序数是奇数,要想有解,要进行奇数次的移动,才能保证最终逆序数是偶数。
如何转换逆序数奇偶性
具体实现应该很简单,不多说了,就说一点。如果想更改一个数字序列的逆序数的奇偶性,只需要调换一对逆序数的位置即可。
【转】数字华容道怎样才能有解相关推荐
- 华容道3x3的技巧_数字华容道怎样才能有解
数字华容道,是在4x4的格子中,依次从左到右,从上到下放置1-15这15个数字.经过一定的随机,必须将这15个数字复原.每个数字只能向相邻的唯一空格移动.难度更高的,格子和数字会更多,比如5x5. 我 ...
- 数字华容道算法生有解
数字华容道NxN数字随机排列的阵列有解的充要条件是: N为奇数,总逆序数为偶数, N为偶数,总逆序数为奇数. --数字华容道算法2*2-10*10 --随机生成有解算法 --作者,韩永旗 --迷你号2 ...
- 15数字华容道解法 图解_数字华容道最后一行怎么解 最后一道解答技巧
数字华容道的基本解法思路就如同魔方解法-样,下面开始教学步骤,先对第一排,将1.2.3一个个移到目标位置,这一步不需要什么技巧,只管将三个数字-个一个移就行,其它数字不用管. 在移数字4时先移到目标位 ...
- egret制作小游戏:数字华容道及有解判断(代码注释)(评论区有源码下载~)
继续学习egret,最近写了数字华容道的小游戏,非常简单的小游戏.首先预览一下效果: 数字华容道就是通过移动方块,将方块按照数字的排序进行排列.功能很简单,主要有刷新,提升阶数,如何一定有解,以及简单 ...
- python数字华容道算法_用React写一个数字华容道,你需要知道的秘密
还在上班?很无聊? 这个叫前言 年末了.哦,不,要过年了.以前只能一路站到公司的我,今早居然是坐着过来的.新的一年,总要学一个新东西来迎接新的未来吧,所以选择了一直未碰的那个据说是全宇宙最牛逼的前端框 ...
- 微信小程序 《数字华容道》
简单的做了个数字华容道的小游戏,大概长这样 页面有点简单,但是大概的功能应该差不多都有了. 这个小游戏的难点主要有两个: ① 如何移动? // 移动算法 isPass: false, // 是否通关 ...
- Android开发 之《最强大脑》“数字华容道”
文章目录 0 背景 0.1 游戏介绍 1 结构 2 定义棋盘和棋子 1.0 棋子 2.1 棋盘属性 2.2 排列棋子 3 生成棋局 4 游戏过程 5 高分榜 6 作弊&后记 0 背景 最近看& ...
- 看最强大脑的数字华容道,尝试理解与总结
目录 前言 华容道起源 简介 发展 华容道解法 横刀立马解(最少步数) 数字华容道 界面 解法前言 定理 定理解释 针对定理的证明 正解解法细分3种(非官方定义,都是按照自己摸索和理解定义的) 第一种 ...
- 15数字华容道解法 图解_数字华容道攻略(数字华容道最快解法图)
数字华容道有何解法? 4*4基本在一分钟左右,最快一次32秒.5*5.6*6还没测.4*4太简单,我就简单说一下了,后面5*5和6*6比较详细.4*4: 首先还原前两行.然后把9到12按下图...下面 ...
最新文章
- 利用Cache,asp.net 简单实现定时执行任务
- 论文阅读——《Exposure Control using Bayesian Optimization based on Entropy Weighted Image Gradient》
- HTTP中302与301的区别以及在ASP.NET中如何实现
- GroupCoordinator分析
- 关于TagHelper的那些事情——自定义TagHelper(内嵌TagHelper)
- 关于类的入门例子(1): 继承窗体
- Java项目Lombok
- vue实现php传数据,vue+props传递数据怎样实现
- mysql外部排序算法_「干货总结」程序员必知必会的十大排序算法
- 第二部分 Automake的标准工程组织
- sysbench tpcc-mysql_MySQL压测sysbench/tpcc
- 各行各业,各种资源,淘宝售卖的各种资料,全部分享了 !
- 最新大数据资料合集.pdf
- ensembl-vep/VEP 注释软件安装及测试 超简单版(conda vep、百度网盘数据库)
- android aar的打包引用和解决间接引用异常
- 极简文艺的浏览器主页推荐,无广告,文艺又清新的网址导航
- RBD存储模式为RWX时kubernetes多次挂载该PV不报错
- 笔记:Spring基础
- 斗鱼虎牙合并:从内耗走向一致抗敌
- 18个顶级的腾讯qq技巧