CCBC17 - 余烬
Challenge
CCBC17(Heptadec)的《余烬》给出一段被破坏的中文题面,以及一条风险警告:
风险警告:发现 10 个火源。
题面要求复原原文。复原之后,还要按照题面描述的规则继续操作,得到一个与火有关的十字母英文词。
Analysis
1. 先确定原文的规模
页面上能看到的内容是 91 个汉字和 9 个标点。题面又反复提到“方阵”,而 91 这个数字本身不能组成方阵,于是需要寻找一个包含 91 的方形规模。
1 | 11 × 11 = 121 |
因此,原始题面应当有 121 个汉字,排列成 11×11 方阵;现在看到的文本比原文少了 30 个位置。
这也和“发现 10 个火源”对应上了:每个火源会影响自己以及上下左右四个位置。单独计算的话,10 个火源会覆盖 50 个位置,但不同火源的十字区域可以重叠,最终被删去 30 个位置并不矛盾。
2. 还原“火源”的规则
提示把“火源”定义得很具体:只计算字形中带有“火”的字,不包括四点底“灬”。因此,“煮”“熬”“然”“热”这类字不能直接算作火源。
每个火源的作用范围是一个十字形:
1 | 上 |
也就是删除火源自身和正交相邻的四个字,而不是删除周围的 3×3 九宫格。
这个区别很重要。用九宫格去解释会产生完全不同的删除数量,也无法和题面剩余的 91 个字对应起来。
3. 按残留文本复原题面
残留文字的语序已经被打散,但仍然保留了几个关键片段:
- “本应该排一个方阵”
- “暴力穷举复原”
- “自身和周围四个格子”
- “只剩两字”
- “与火相关的十字母词”
结合这些片段,可以复原出一段完整的题面。复原文本如下:
1 | 一场大火烧了残骸。这些字本应该排成一个方阵,但题中所有的字都发生了变异。想要解开这谜题,你们需要暴力穷举复原这道题的题面。每个字的存亡都与自身和周围四个格子相关。得到了答案,你应该先定位每个字的位置,然后,让棋盘继续燃烧到只剩两字,它们指向一个与火相关的十字母词。 |
这里的关键不是把每个缺字凭语感补出来,而是同时满足几个约束:原文长度为 121、火源数量为 10、删除规则为十字形,并且删除后的字符数量必须回到页面上看到的 91 个。
4. 题面的第二层提示
第三条提示说,完成原题面描述的操作后,要把得到的内容加上一个与主题有关的偏旁。
题目的主题是火,因此这个偏旁就是“火”。在残留文字中,能和“火”组成常用词、并且能指向火相关十字母英文词的字,分别是:
1 | 暴 + 火 = 爆 |
得到中文词“爆燃”。它对应的英文是 DEFLAGRATE,正好是 10
个字母,并且是燃烧相关术语。
Solution
这题的解法链可以压缩成:
1 | 91 个残留汉字 |
服务端提交后确认答案正确。
DEFLAGRATE