algorithm - 魔方:如何检查随机面是否与实际可解的立方体匹配?
问题描述
我想知道,给定一个随机生成的魔方面,我是否可以判断该面是否(至少)对应于魔方的一个可解配置。也许每个随机面都可以匹配到一个可解的立方体,或者不是,我也不确定。
我认为一个好的方法是,对于固定的随机面,以最终可解的方式构建立方体的其余部分。如果我能做到这一点,那么这张脸就是有效的,否则就不是。
我需要实现一个算法来做到这一点,但我真的不知道从哪里开始。
有什么建议么?
解决方案
每个面都可以来自一个可解的立方体。构造面,然后以某种方式完成立方体。立方体可解的三个条件是“置换奇偶校验”、“边缘奇偶校验”和“角奇偶校验”。如果排列奇偶校验错误,可以通过将对面的两条边交换到您关心的边来修复。如果边缘奇偶校验错误,可以通过翻转对面的单个边缘来修复。如果角落奇偶校验错误,扭转一个角落一次或两次修复它。
这个证明取决于每个面都是可构造的这一事实,但这很容易,因为你选择了中心正方形,然后选择任何带有正确颜色的边缘和角落。你必须想一想才能说服自己,不会缺少合适的颜色。
推荐阅读
- snowflake-cloud-data-platform - 插入 TABLE($TABLE_VARIABLE) 雪花
- c - 为什么我的strcmp的值不等于0或者无效?
- android - 带有 Material Outline Box 的 boxStroke 不起作用
- r - R:在特定字符串之后提取数字
- twilio - Twilio 函数检索语音邮件类型错误:不推荐使用参数“auth”。改用“用户名”/“密码”
- r - 如何在一个几何而不是另一个上绘制网格
- reactjs - 添加到可观察数组时,mobx 反应未能触发
- jquery - Rails 5.2 上 jquery DataTables 和 will_paginate gem 的分页问题
- python - 当我们试图拟合来自 pandas 数据帧的数据时,如何找到卷积神经网络的 input_shape?
- python - 使用排除项列表排除在文件列表中找到的某些单词