下载客户端

满足双方质量检查的解答示例(仅终盘问题)

2026-03-21 07:00:27

AI智能总结导读

这是一篇编程类终盘问题的解答示例帖,包含3-6到5-8多道题的解决方案,给出了各题的复杂度、步数数据,详细讲解解题思路与流程,还配有对应解题流程图,可给卡关的玩家提供参考。

这是我解出的答案示例。其中包含满足两项质量控制指标的方案。你可以在卡关时稍微参考一下,或者在解完后对照着体验乐趣。目前正在编辑中。计划从后面较难的题目开始补充。 3-6 三元素分类器(720 / 41.7) 复杂度:720 / 750 步数:41.7 / 48.8

虽然由于未详细指定转换条件而显示错误,但实际运行没有问题。因为罗列数字会显得难以阅读,所以这里优先考虑可读性。 思路如下: 将3个数字复制到I1~I3中,逐个减1。 从变为0的数字开始,依次打开标记为已完成的开关并输出。 右上角的Iinc用于记录当前已减去的数字数量。 我认为还有其他方法,或许能实现更快或更简单的构造。 3-7 括号移除器(740 / 76.09) 复杂性:740 / 790 步数:76.09 / 90.53

题材非常有趣的问题。解题花了相当多的时间。 各机械的功能如下: IpreB:记录“(”左侧有多少个“x”和数字的计数器 Inow:记录需要处理括号内第几个项目的计数器 Icnt:在2-B中使用Inow时复制内容的临时计数器 Cend:记录正在处理括号内最后一个项目的开关 流程如下: 1. 抄写直到“(”的所有字符串 此时将“(”直前连续的“x”或数字的个数记录到IpreB中 2. 进入括号内,抄写直到找到“+”的所有内容 3.当找到【+】时,搜索【)】的位置,并将Inow增加1 如果找到的不是【+】而是【)】,则将Cend设为ON 4. 搜索到【)】的位置后,只要后面跟着【x】或数字就进行抄写 5. 当遇到【+】或空白时,记录【+】并搜索【(】 6. 向左搜索IpreB数量的位置,返回步骤1 2. 那么,从第二次开始向右搜索Inow数量的【+】 3-8 主计算器 (990 / 106.85) 复杂度: 990 / 1040 步骤数: 106.85 / 149.95

这个问题也很有趣。由于乘法和加法的运算优先级不同,需要妥善处理。 4-4 动词变位器 (560 / 51.15) 复杂度:560 / 620 步数:51.15 / 51.9

4-5 电报码翻译器(300 / 80.5) 复杂性:300 / 340 步数:80.5 / 100.2

4-7 语法检查器(1080 / 710.53) 复杂性:1080 / 1110 步数:710.53 / 725.86

这似乎是个有多种解决方法的棘手问题。我纠结于如何设计处理循环,也为循环的结束条件该如何设定而烦恼。 以下是处理步骤的大致框架: 使用INvoc将单词符号化,这一步还算简单。 接下来的处理大致分为两部分: 1. 将Tnote的语言符号输入INgmr,检查是否能完成转换。 a. 若在6个字符以内完成转换(转换成功):将转换后的字符串写入Text,然后进行下一个语言符号的判定。 b. 若连续7个字符以上未完成转换(转换失败):返回到开始读取的位置,将首个语言符号直接写入Text,然后进行下一个语言符号的判定。 2.当语言符号消失时,将文本内容复制到便签并进入循环。循环的结束条件是判断文本内容是否比便签内容短。但仅在初次循环时,即使发生字符串转换,也可能不会使字符串变短(例如$N→$NP、$VI→$VP等),因此使用C2nd作为条件,仅在第二次循环及之后生效。成功条件的判定是判断是否仅存在$S。5-1 书籍密码(360 / 65.75)复杂度:360 / 360 步骤数:65.75 / 65.75

5-2 之字形密码(520 / 141.3) 复杂度:520 / 520 步数:141.3 / 148.14

5-3 一次性密码本加密法 (510 / 120.35) 复杂性: 510 / 640 步数: 120.35 / 122.35

5-4 卒的移动 (1740 / 159.06) 复杂性:1740 / 1820 步数:159.06 / 447.53

之前在步数方面一直很困扰,不过从其他玩家的攻略中获得了灵感并重新进行了组合。感谢。 5-5 骑士移动(1840 / 275) 复杂度:1840 / 2690 步数:275 / 351

5-6 皇后移动 (1550 / 596.33) 复杂性: 1550 / 1690 步数: 596.33 / 627.53

通过A・B对每行每列是否有棋子进行判定,并将空出的编号记录到磁带上 通过C根据刚才磁带上得出的、纵横方向都没有棋子的格子,从斜向十字方向进行搜索 通过D进行递归处理。递归处理方面做了一些巧妙设计 在Tcol中,对于排除出候选的行编号位置,用【$】进行填充 在TcolB中按顺序记录放置了棋子的行,递归时从后往前将其返回至Tcol Trow不使用【$】,仅通过左右移动进行处理 注意:在D内的第二个映射器M33中,虽然显示为TcolB→Icol,但由于A~H对应0~7,因此只有这里需要进行改写 5-7 区域分析(840 / 425.8) 复杂度:840 / 1360 步数:425.8 / 1295.3

将问题重新解读后,可以看作是在找到B之前填充区域的问题。作为一种简单的填充方法,我尝试用递归进行处理(个人偏好上,优先考虑流程图的简洁性而非步数): 1. 从A格开始探索 2. 在检查是否处于墙边的同时,按上下左右方向依次进行探索 3. 此时,将前进的方向用1-4记录在磁带Tdir上 4-1. 如果前进的目的地是■或A,就返回原位置并尝试下一个方向 4-2. 如果前进的目的地是空白,就在该位置标记A 5. 若上下左右方向的探索结果均为墙壁或A,就回溯磁带,按照数字所记录的方向的反方向返回 6.探索数字所指示的下一个方向 5-8 迷宫分析(790 / 361.7) 复杂性:790 / 137 步数:361.7 / 744.3

几乎和5-7一样……或者说,5-7可以用这道题相同的解法来解决。 与5-7的区别在于,前进时记录×,返回时将记录的×消除。 在5-7中,由于屏幕上残留着A这个记录,所以形成了填充效果, 而在5-8中,因为会消除记录的×,所以也可以通过其他路径踩到同一个格子。

评论

共0条评论
face
inputImg
相关阅读
最新更新

最新更新

  • 质量控制指南(更新中) 分享一些解法,更新中 — 更新中,之后有找到的最优解会继续更新上来 第二章 2-1及以前都比较简单,就先不写了,以后有空更新进来。有的截图右上角没有显示步数,因为是重新打开截屏的,懒得再…
  • 显示屏特殊符号 — 我已经获得了关卡制作中所有【显示屏幕】的特殊符号。这花了我大约一个小时(中途没停)。 符号如下: ♔ ♕ ♖ ♗ ♘ ♙ ♚ ♛ ♜ ♝ ♞ ♟ ■ △ ▲ ○…
  • 3-3 用一个自动机实现两个功能的存档 — 这是3-3关卡(加法器)中的一个自动机,它能同时满足复杂度和步数这两项要求。自动机预览
  • 部分关卡的合格解决方案 — 一些解决方案既能满足资格要求,又能在某一方面实现最大化(可能并非最佳) 包含2.6/2.8/3.1/3.3版本 2.6
  • 满足双方质量检查的解答示例(仅终盘问题) — 这是我解出的答案示例。其中包含满足两项质量控制指标的方案。你可以在卡关时稍微参考一下,或者在解完后对照着体验乐趣。目前正在编辑中。计划从后面较难的题目开始补充。…
  • 部分关卡的双达标解 — 质量检查! 说明 只记录我找到有双达标解的关卡 如果运行有问题可能是对映射节点有单独的优化但忘了注明,请留言提醒我 2-3
  • 解决复杂度或速度类自动机谜题 — 本指南展示了一些可能的解决方案,用于解决初期关卡的复杂度和速度问题(不一定同时兼顾),并对所使用的算法提供了一些解释。 1-1 开关组装 复杂度与速度(复杂度 …