敬拜的传教士经过的时间过长,是要指出“ Rubik's Cubes”(在T恤,海报等上)的图片实际上无法解决。
首先要检查的是多维数据集由正确的部分组成。要解决一个立方体需要六种颜色,每个颜色有九个正方形。多维数据集还需要每个边缘和角单元(这些是组成多维数据集的较小的多维数据集)是唯一的。它们不仅必须是唯一的,而且如果两个中心部分彼此相对,则任何边或角部分都不能包含这两种颜色。
一旦拥有由所有正确零件组成的多维数据集,您仍然需要验证它是否可以解决。这里有一些规则,所以我请专家来解释它们,下面的破坏者解释了我们如何做到这一点。如果您有兴趣自行解决问题,则无需访问该站点即可了解或参与此挑战。
您的任务是采用一种模式作为输入,并确定它是否实际上是可解决的魔方。为了解决问题,必须有一种方法可以在多维数据集上执行有效的移动,以使多维数据集的每个面上只有一种颜色(不同的面上有不同的颜色)。大多数Rubik立方体具有标准颜色(白色与黄色相反,等等),您可能不会假定求解状态遵循该特定颜色。
有效的移动是立方体的单个面的顺时针或逆时针旋转。随着立方体表面的旋转,与该表面相邻的任何正方形也将旋转,并保持连接到它们先前接触的表面。
IO
您可以以任何合理的方式使用该多维数据集。如果您的语言具有一些内置的对您有利的“立方体面”类型,也可以作为输入,否则,您可以采用2D网格的网络,立方体的数组,每个面1 3 x 3列表。只是合理。如果您想知道某种特定格式是否可以接受,请在聊天中对我进行评论或ping我,然后我将添加挑战以说明其有效性。
您的输入格式最多只需要支持9种颜色。
对于输出,这是一个决策问题,因此您应该为“是,这是一个有效的魔方”输出一个常数,而为“否,这不是有效的魔方”则输出一个常数。
这是代码高尔夫球,因此答案将以字节计分,而字节数越少越好。
测试用例
这是测试用例。它们的格式为一个立方体的网络,每个正方形为一个字母。不同的字母代表不同的颜色。可以根据要求添加更多的测试用例。
可解决的
RRR
RRR
RRR
GGGWWWBBBOOO
GGGWWWBBBOOO
GGGWWWBBBOOO
YYY
YYY
YYY
GRR
GRR
ORW
WWRBWYBOOGGY
GGRBWGYBBOOO
OOGRWGYWWRBB
WYO
YYB
YYB
无法解决
RRR
RRR
RRR
GGGWWWBBBOOO
GGGWWWBBBOOO
GGGWYWBBBOOO
YWY
YYY
YYY
RRR
RRR
RRR
GGGWWWBBBOOO
GGGWWWBBBOOO
GGGWWWBBBOOO
YWY
YYY
YYY
RRR
RRR
GGG
GGYWYWRBBOBO
GGYWWWROBOOO
GGYWWWRBBOOO
BBB
YWY
YYY
RRW
RRW
GGG
GGYWWYEOBROO
GGYWWYEBBROO
GGOWWYWBBROO
BBB
YYW
YYO