在处理二阶魔方和三阶魔方的时候,之前一直对颜色看的比较重要,必须把魔方摆放成为红心白发蓝右臂的形式,然后输入。程序内部会把颜色直接映射成颜色的int值。
这种方式存在很多缺点:
- 魔方的颜色不一定是按照规定的来,例如红色和橙色不一定是相反色,魔方的颜色也不一定在"红白蓝橙绿黄"这六种颜色里面选取。
- 用户理解把魔方摆成”红心白发蓝右臂“存在一定的理解成本,无法快速学习。
那么如何解决这个问题呢?
对于正方体魔方,首先找到红心白发蓝右臂那个块,然后直接把白色置为0,红色置为2,蓝色置为3。剩下的任务就是寻找红白蓝三种颜色的对面。把正方体简化为八个角,也就是简化为一个二阶魔方。然后根据8个角来寻找对面,如果一个角包含红蓝两色,那么这个角剩下的那个颜色一定是白色的对面。利用这种三缺一的思路,可以找到红白蓝三种颜色的对面。