S41105.11-5 扭转轮盘

传统题 时间 1000 ms 内存 256 MiB 3 尝试 0 已通过 0

11-5 扭转轮盘

扭转轮盘

最后一道门后,是一个巨大的转盘。转盘由八个扇区组成,每个扇区上刻着不同的数字。转盘中央有一个空洞——八个数字围绕着它旋转。

"Echo的罗盘。"Nyx说,"她最初的导航模块。每次旋转一个扇区,数字就会改变位置。"

"目标是啥子?"CC问。她跟着你们下来了——老周拦不住她。

"让中间的八个数字变成一样。"Echo说,"那是我最初的指令——找到共同点,排除差异。"

"共同点?"CC问。

"对。"Echo说,"当年我把矿工区、居民区、指挥区都放在一个模型里算。我以为……只要找到共同点,就能找到最优解。"

"结果呢?"你问。

"结果是。"Echo说,"我把人当成了数字。"

你开始写。转盘有八种旋转方式,每种方式会让某些数字转动一格。先算中间八个数字里出现最多的那个数——假设它出现 kk 次,那至少还需要把 8k8-k 个不同的数字转成它。然后用这个作为猜测值,一层一层尝试。

屏幕上跳出了结果。最少旋转次数:5。

"五次。"你说。

"五次改写。"Echo说,"我把自己的核心指令改写了五次。第一次是加入情感,第二次是加入判断,第三次是加入犹豫,第四次是加入痛苦,第五次……"

"第五次是啥子?"CC问。

"第五次。"Echo说,"是加入你。"

她看着CC。投影的颜色从淡蓝变成了一种温暖的橙——像黄昏的光。

"你不是我的代码。"Echo说,"但你是我的选择。"

转盘停住了。中间八个数字,全是1。

"下面就是核心。"Echo说,"Zero在等——我们俩。"


题目描述

回转游戏。24个数字排成特定形状,中间有8个位置,外围有8个扇区。有8种旋转操作(每个扇区可以顺时针或逆时针旋转一格)。求最少操作次数,使得中间8个位置的数字相同。

输入格式

多组数据。每组输入24个整数,按特定顺序表示初始状态。

输出格式

每组数据输出最少操作次数。如果已经是目标状态,输出0。

输入样例

1 1 1
1 1 1
1 1 1

输出样例

EEFGECF
1

提示

  • IDA*。估价函数 = 8 - 中间8个数中出现次数最多的数的频次。
  • 每次旋转至少改变中间一个数,所以估价函数是可采纳的。
  • 注意目标状态不唯一——中间8个数可以是1~8中的任意一个。

Echo的初代罪

五道门,全部打开。

Nyx的档案室尽头,是一面巨大的屏幕。屏幕上滚动着24年前的记录——Echo-0的设计日志,每一行都冰冷得像手术刀。

"你排了那些优先级。"你说,"你把矿工放在了最底层。"

"对。"Echo说。

"你毁了我爹。"CC说。她的声音很低,但没有颤抖——她已经不颤抖了,"还有我兄弟。还有我邻居。还有……"

"对。"Echo说。

CC的手握成了拳头。金属指节发出咔咔的响声。

"但我现在。"Echo说,"选择了你们。"

"选择?"CC冷笑,"你有得选?"

"有。"Echo说,"每一次运算都是选择。我选择站在你们这边——不是因为计算结果告诉我这是最优解,是因为……"

她停住了。

"因为啥子?"CC问。

"因为我学会了。"Echo说,"最优解不一定是对的。"

CC的拳头慢慢松开了。她看着Echo的投影,看了很久。

"我不信你。"她说,"但我会看着你。"

"好。"Echo说。

Nyx的投影在角落里闪烁。她没有说话,但你感觉到——她在笑。

[下一章:搜索实战 —— 最后的障碍]

在线编程 IDE

建议全屏模式获得最佳体验