完全なものとして初期化されているルービックキューブをランダム化したい(すべての色が正しい側にある)。立方体を回転させる移動機能があります。適切にランダム化するために、連続して 50 個の関数をランダムに選択したいと考えています。
私は主に C++ を使用しており、Python のケース/スイッチがないことがわかっているため、Python についてもう少し学ぶためにこのプロジェクトを行っています。そのため、辞書を試しています。辞書を作成すると、何らかの理由でコードが実行されるようです。
def random_cube(self):
scramble = { 0 : self.up_turn(),
1 : self.down_turn(),
2 : self.left_turn(),
3 : self.right_turn(),
4 : self.front_turn(),
5 : self.back_turn(),
6 : self.up_turn("inverted"),
7 : self.down_turn("inverted"),
8 : self.left_turn("inverted"),
9 : self.right_turn("inverted"),
10: self.front_turn("inverted"),
11: self.back_turn("inverted")
}
for x in range(50):
i = random.randint(0,11)
scramble[i]
なので、この辞書を作ってみると、なぜか11項目全て実行してしまうようです(たぶん)。少なくとも if/elif ステートメントの長い文字列よりもエレガントな、より良い方法を見つけることができないようです。
!EDIT: 両方の提案を実装すると、関数の (「反転」) フラグはどちらの提案によっても設定されません。たとえば、1 と 7 を呼び出すと両方とも down_turn が返されますが、出力は、7 番にあるはずのフラグが設定されていないことを示しています。
何か案は?