あなたの質問に対する答えは、すでにサイトにあるようです。
Look at the U/D faces. If you see:
- L/R colour (orange/red) it's bad.
- F/B colour means you need to look round the side of the edge. If the side is U/D (white/yellow) it is bad.
Then look at the F/B faces of the E-slice (middle layer). The same rules apply. If you see:
- L/R colour (orange/red) it's bad.
- F/B colour (green/blue) means you need to look round the side of the edge. If the side is U/D (white/yellow) it is bad.
したがって、U/D/F/B 面の色をループするだけの問題であり (または、単一のエッジ ベースで行うこともできます)、それらのいずれかがルールに違反している場合、エッジが悪いことがわかります。この方法は各エッジを一度しか見ていないので、かなり効率的だと思います。ただし、これはスクランブルアルゴリズムの知識を無視します。
単純にスクランブル アルゴリズムを使用してエッジの向きを決定するのは、ターンのパターンを監視する必要があり、スクランブルが十分に長い場合、上記で説明したよりも時間がかかる可能性があるため、はるかに困難です。しかし、完全を期すために、それを行う方法の簡単な例を示します。
- 方向付けられたすべてのエッジの状態とそれらがどこにあるかから始めます (位置は 12 だけなので、それに応じて番号を付けます)。または、1 つだけトラック 1 に興味がある場合は、もう一度。
- 次に、リストを繰り返し調べます
- F/B が奇数回回転するたびに、回転された面のエッジの向きが反転します。
これは、エッジを完全な状態に戻すときにエッジの状態を追跡しながら逆方向に実行できます。最終的にエッジが「誤った方向にある」と主張する場合、開始時の状態とは実際には反対であったことがわかります (解決された立方体は、すべてのエッジが方向付けられています)。
ただし、これは O(n) (n はスクランブルの長さ) で実行され、最初の実行は O(1) で実行されるため、非常に短いスクランブルが予想される場合は、この 2 番目の方法が適している可能性があります。しかし、あなたは最初のもので迅速な結果が保証されています.
疑似コードを提供しますが、これらのアルゴリズムはそれほど複雑ではないと思います。また、データがどのように保存されるかもわかりません。