一道整活题的诞生
剧透Sudoku: cercar una agulla en un paller出题过程中想到的一些小巧思(笑)
剧透警告
本文可能包含谜题答案与 Hunt 解题过程,尚未完赛者请谨慎阅读。
涉及谜题:Sudoku: cercar una agulla en un paller
这篇文章的主题是Puzzle。中文而言,是谜题。通过一个题面,来获得一个“答案”,就和做题的感觉差不多。
这次要介绍的题目是我自己出的Sudoku: cercar una agulla en un paller,在各方面而言都是整活。
动机
谜猫(puzzle.cat)官方群里讨论近期题目出现了众多“和同开珎”的题目,由于“和同开珎”本身的核心玩法比较固定,加之题目大多数比较“薄”(从题面到结果的步骤少),所以该不该收紧此类题目的审核。
我半开玩笑地问:“那我能不能一天上传一个数独”?
群内的反馈尚可,于是决心开干。顺便此时我已经中标这个博客的域名,我便想着顺便整整谜猫的活,搞一个加泰罗尼亚语的题目。(嗐,.black不是有色人种专用域名真是太国际化啦!)
思绪
首先,我要狠狠地往题目里塞数独,从而大量节约审核压力,避免真的变成一天上传一个数独,而是一次性上传足够量的数独。
然而,纸笔谜题做成Puzzle,一般都是有个谜题→答案的、称之为“提取”的过程。如果只是纯粹的数独,未免有些枯燥。
而且对于普通的数独,显然34字节之内就能存下任意盘面,100个盘面也才4KB以内。但是对于做题的人来说,如果一道题内要做100道数独,那简直要命。
那么如何在我塞进去如此众多盘面的情况下,还能让做题者不用全部做出来,就能知道答案呢?那便是让不同的数独,都包含答案。或者,让一小部分数独,就足够包含全部答案。至于实现这两点的办法多如牛毛,倒不如说这才是一个Puzzle的核心谜题。
在这题中的处理方法
此处涉及剧透
在Sudoku: cercar una agulla en un paller中,我选择的方式是——让固定格子中的数字不变。这种做法既让一个数独包含了全部答案,又让解题者无法从一个数独中获得答案,促使解题者查看更多数独。
然而这种思路下就要面对一个问题:这些不变的数字要不要出现在题面里?如果出现的话,那么解题者完全可以不做数独,靠题目中给定的数字,就能确定哪些格子的哪些值没有改变;如果不出现的话,解题者也是同样的思路,仍然可以确定哪些格子没有改变,只不过要想知道具体值还是要做一遍——或者完全不做,毕竟在81个格子里画太复杂的图案也不太现实。
在这题中我权衡利弊,选了一个稍微取巧的办法——17线索数独。17个数是一般数独想要有唯一解的必须值,但是提供的线索很少,想要靠不断获取题目来发现哪些不变的数字,需要的量会稍微多一些。(其实也没好到哪去)同时,17线索数独大部分不算难,可以避免玩家被数独劝退。
撰拟答案
在思路确定之后,我打算先找一个答案,然后逐步验证该答案是否可以在数独中成立。
在这题中的处理方法
此处涉及剧透
在一开始,我就把目标放到了图案转文字的这最后一步上。我需要一个非常明确的图案,那种一眼看到就只有有限意义的图案。首先我想到的是一些基本几何图形。基本几何图形有很多优点,比如撇开矩形和圆形,大部分几何图形都可以被明确描述,最差也只要加上字母数作为硬性提示就可以了。
然而,几何图形也有些缺点,就是不够浪漫(笑)。本来数独就是一个非常“代数”的游戏,再加上“几何”就更多了几分做作业的味道。当然图案一旦复杂,就很难精确描述,很难不产生各种联想。而常见图案中,最常见的莫过于五角星。不过“Estrella de cinc puntes”这种长答案还是过分了点。
最后我选择了目前题目中的这个图案。说实话我个人觉得这个答案比起五角星更差了。因为这个图案有更多的联想,而且因为端点更多,更容易被发现。这算是我这题比较遗憾的点。但是也有一些好处,比如这个图案可以更加规整地填入81个方格,而不需要和五角星一样必须做出一些变形。
定论与实践
是否存在可以容下答案的17线索数独?
原始题面
确定了思路和答案之后,就是要先解决第一个问题——我要塞进题目的这些数独是否存在?
一开始我尝试手写算法去找17线索数独,但是稍微估了几种算法之后发现不仅计算量本身大得惊人,后续我也没有很有效的加速手段(GPU运算的实际效果未知)。但是这时我想到了反查,在“十七个数字是下限”这个结论已经差不多二十年之后的今天,这些数独应当不难找。于是在LLM的帮助下我找到了tdoku项目,该项目所用的测试集包含了全部49158种17线索数独。这些数独就作为我出题的底子。
…………
本章剩下的部分是关于技术方面的絮叨,谜猫上就直接跳过了,有兴趣的可以看原文《一道整活题的诞生》
先导
原文也介绍了一些用户交互方面的设计。不过作为谜题,更重要的是答案引导的设计。
首先是玩家做完之后,只给一句简单的正确提示,而不引导玩家开始下一局。从而避免玩家被引导进入不停做题但无法理解为何做题的局面。另外,题面上也没有任何表示“题面编号”和“已解决数”的地方。这是暗示玩家做完数独不是作为某种获得答案提示的必要的交互逻辑。这两处都是给玩家时间去思考做完数独之后有什么可以做的。
其次是关于解题思路的引导。
首先在风味文本中加入对思路的引导,用问句来表示这是题目的一部分,引导玩家关注“不变”。其次是在交互题的左上方,一般数独软件会写自己的名字或者干脆就是“Sudoku”的地方,写成“Sudokus→[9]⇀[8]→(8)”。“Sudokus”是暗示单一题面线索不足,“→[9]”表示第一步提取的数量,“→(8)”表示最终提取的单词的长度。而用不同的箭头“⇀[8]”表示是从9个元素中舍弃变成8个。如果玩家没能理解是舍弃哪一个,数独的logo也作为提示的一部分。
最后是对于答案的确认引导。
图案到单词的过程是极度不确定的过程。在此之前我用谷歌识图和百度识图来识别我绘制的图案,均能在首要位置给出正确结果。但是这个图案仍有一些歧义,在加泰罗尼亚语的范围内,对有歧义的情况作为中间答案,帮助玩家确定图案本身正确,使得做出图案的玩家可以枚举最终答案。
同时,在风味文本中使用了带有答案的意思、但措词稍微少见的说法,使得玩家想到答案时,能够发现“啊,这个词在风味文本中出现过”而确定答案的正确性。
仿用
谜题副标题“cercar una agulla en un paller”直译“草里找针”,致敬CCBC 15的nano名题《大海捞针》。虽然这个题目的“海”和“针”的维度不太相同。
文章标题《一道整活题的诞生》,致敬经验分享兼藏题相声的《一道好题的诞生》。但是这篇文章只有不足半道题。
反刍
首先这个题目包括提示在内全部为加泰罗尼亚语,对于puzzle.cat的大多数(?)玩家而言是完全不熟悉的,本身会有一部分抗拒感。发布后第20以后的浏览量无人通过甚至无人提交也侧面印证了这一点。
此处涉及剧透
当然,这种不熟悉也是在风味文本中能藏答案的关键所在。
其次题目的设计使得玩家其实一道数独也不用做,这在提示中也有体现。相对地在知道题目设计之后,只是来做做数独休闲的玩家也无法安心做数独了(毕竟变成了冗余题面而且还非常简单的数独)。
求解思路和提取思路也比较生硬,排序部分的设计其实意义有限,还有一个非常生硬的舍弃部分。
作为不变的部分也不只有答案这部分,每关都有17个数字这点也是不变的,也许夹杂一些18线索数独可能会更好一些。
最终的答案歧义也比较多,而且有些也确实是8字母长度,用中间答案作为引导稍微生硬一些。
题目本身难度不高,也比较轻量。但是加载时间和提示条数可能使得玩家误判,这也是比较尴尬的点。
评论
暂无评论