SP7583 YOKOC - Cubic Eight-Puzzle
题目描述
我们来玩一个拼图游戏,棋盘是一个 3x3 的格子,上面放置了八个立方体,剩下一个格子是空的。
这些立方体的六个面分别涂有三种颜色。在每一步中,你可以将相邻的一个立方体滚动到空格中。你的目标是通过若干步操作,使上表面显示出指定的颜色图案。
游戏规则如下:
1. **立方体的着色**:所有立方体的着色方式一致,如图 3 所示。相对的两个面有相同的颜色。

输入格式
输入为多组数据集。输入的结尾由一行 “0 0” 表示。数据集数量少于 16。每个数据集的格式如下:
> _x_ _y_ _F_ $ _{11} $ _F_ $ _{21} $ _F_ $ _{31} $ _F_ $ _{12} $ _F_ $ _{22} $ _F_ $ _{32} $ _F_ $ _{13} $ _F_ $ _{23} $ _F_ $ _{33} $
第一行包含两个整数 _x_ 和 _y_,用空格隔开,表示初始空格的位置 (_x_, _y_)。_x_ 和 _y_ 的取值为 1、2 或 3。
接下来的三行表示目标颜色图案。每行包含三个字符,分别代表 _F_ $ _{1j} $ 、_F_ $ _{2j} $ 、_F_ $ _{3j} $,用空格隔开。字符 _F_ $ _{ij} $ 表示在位置 (_i_, _j_) 上立方体的顶部颜色(如果有立方体的话)。具体字符意义如下:
- B: 蓝色
- W: 白色
- R: 红色
- E: 空格
每个数据集中有且只有一个 `E` 字符。
输出格式
对于每个数据集,如果能在 30 步以内达到目标,请输出需要的最少步数;否则,输出 `-1`。
**本翻译由 AI 自动生成**