Методы шифрования кубика Рубика 2×2: случайные ходы, фиксированные последовательности и алгоритм теории групп

Я могу предоставить вам несколько методов сборки кубика Рубика 2×2, а также примеры кода. Вот фрагмент кода Python, который вы можете использовать:

Метод 1: случайные ходы

import random
moves = ["U", "R", "F"]  # List of possible moves: Up (U), Right (R), Front (F)
def scramble_cube():
    scramble = []
    for _ in range(10):  # Perform 10 random moves
        move = random.choice(moves)
        scramble.append(move)
    return " ".join(scramble)
scramble = scramble_cube()
print(scramble)

Метод 2: фиксированная последовательность скремблирования

scramble_sequence = ["R'", "U'", "R", "U", "R'", "U'", "R", "U", "R'", "U'", "R", "U", "R'", "U'", "R", "U"]
def scramble_cube():
    return " ".join(scramble_sequence)
scramble = scramble_cube()
print(scramble)

Метод 3: алгоритм теории групп

def apply_move(cube, move):
    if move == "U":
        cube[0], cube[1], cube[2], cube[3] = cube[1], cube[3], cube[0], cube[2]
    elif move == "R":
        cube[1], cube[3], cube[5], cube[7] = cube[7], cube[5], cube[1], cube[3]
    elif move == "F":
        cube[0], cube[2], cube[4], cube[6] = cube[6], cube[4], cube[0], cube[2]
def scramble_cube():
    cube = ["W", "W", "W", "W", "G", "G", "G", "G"]  # Initial state: White (W) on top, Green (G) in front
    moves = ["U", "R", "F"]
    scramble = []
    for _ in range(10):  # Perform 10 random moves
        move = random.choice(moves)
        apply_move(cube, move)
        scramble.append(move)
    return " ".join(scramble)
scramble = scramble_cube()
print(scramble)