-
-
[讨论]关于Q4第十题幕后之王设计的问题,请大家讨论一下
-
发表于:
2019-12-27 16:35
5592
-
[讨论]关于Q4第十题幕后之王设计的问题,请大家讨论一下
按照我的理解,这一题难度应该没这么大,应该撑不到两天。到第三天居然还没人攻破,搞得我自己都有点慌,不会是有漏洞吧?这下丢脸丢大了!后来经过段老大协调我才知道,由于设计时没有考虑到一个因素,导致某个小坑放大成一个巨坑,有很多人掉在里面爬不出来了,在这里我表示很抱歉!
详细说一下设计流程吧。用户输入的前18位用作2个大数,后面全部用作迷宫的走法。迷宫有四层,分散放置了四个物品,每收集一个物品就把大数计算一次,最后走出迷宫时检测大数计算结果,正确时才退出迷宫。由于走迷宫的解法不唯一,通过限制输入长度让迷宫解法必须是最短解,这时迷宫单层内的走法先后互换导致解法还是不唯一,我又加了个crc验证限制唯一解,这里就需要穷举所有最短解,此时的穷举范围最多只有3072组,全部穷举完也只是毫秒级的,只是编程实现起来比较麻烦。
由于设计时考虑不周,在大数初始化时我随意设定了一个值,却正好符合最后走出迷宫时的检测条件,这导致了没有收集物品就能直接走出迷宫,但是在迷宫外还有crc验证,此时由于没有收集物品,迷宫步数还冗余很多步,这就存在这么一种可能:会不会在这些冗余步数里,正好有一种能碰撞出crc呢?于是很多人都掉这坑里了,有人碰撞了一晚上…(没错!ccfer!说的就是你!)
从设计者的角度来看,这个碰撞意义不大,如果碰撞出正确解,由于没有收集物品跳过了前18位的大数计算,在这种解法下前18位可以为任意值,这只能证明此题存在无数多解,浪费大量时间来证明题有问题,还不如好好做题呢。
从做题的角度来看,在发现前18位没有参与时也能走出迷宫,但是crc穷举范围巨大,此时应该能意识到这是一个坑,是不是题目故意诱导我在这里穷举的?然后找前18位参与的地方,然后就回到正常的路上了。(还好逻辑链条没断)
从题目的趣味性来讲,由于这个坑太过巨大,线索变得非常隐蔽,但是还不至于发现不了,致使难度大大增加,趣味性大大降低,这是设计的败笔。
好了,情况说完了,现在由于此题存在多解的可能性(注意,只是可能性,并没有证明),这就是说有违规的可能,那么做题的你,觉得这题到底有没有违规呢?请大家投票,不管什么结果我都接受。(内心OS:如果我一口咬死这就是我故意留的大坑,会不会有人来咬我?哈哈哈哈)
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2019-12-30 16:40
被kanxue编辑
,原因: