简单测试

import kociemba
def print_cube(state: str):
    """
    打印 kociemba 格式的魔方状态 (54 字符串) 的展开图
    """
    if len(state) != 54:
        raise ValueError("状态字符串必须是 54 个字符")

    # 分割 6 个面
    U = state[0:9]
    R = state[9:18]
    F = state[18:27]
    D = state[27:36]
    L = state[36:45]
    B = state[45:54]

    def face_to_lines(face):
        return [face[i:i+3] for i in range(0, 9, 3)]

    U_lines, R_lines, F_lines, D_lines, L_lines, B_lines = map(face_to_lines, [U, R, F, D, L, B])

    # 打印展开图
    print()
    for line in U_lines:
        print(" " * 6 + " ".join(line))
    for l, f, r, b in zip(L_lines, F_lines, R_lines, B_lines):
        print(" ".join(l) + " " + " ".join(f) + " " + " ".join(r) + " " + " ".join(b))
    for line in D_lines:
        print(" " * 6 + " ".join(line))
    print()

# 示例:未打乱状态
state0 = "FBDBUUBFFRFFLRRLLLDRDUFFBBBRDDDDDLDUURRBLLFRULLRUBUBFU"
print_cube(state0)
print(kociemba.solve(state0))  # 输出 ""


mf.py

import kociemba

def C2D(color_str):
    # 创建颜色到字母的映射字典
    color_map = {
        '白': 'U',
        '红': 'R',
        '绿': 'F',
        '黄': 'D',
        '橙': 'L',
        '蓝': 'B'
    }

    # 初始化结果字符串
    result = ''

    # 遍历输入的每个颜色字符并转换
    for char in color_str:
        if char in color_map:
            result += color_map[char]
        else:
            # 对于未定义的颜色,保持原样或可根据需求处理
            result += char

    return result


def CS(*args):
    # 初始化结果字符串
    result = ""
    # 遍历所有传入的参数并拼接
    for s in args:
        # 确保每个参数都是字符串类型
        if isinstance(s, str):
            result += s
        else:
            # 对于非字符串类型,转换为字符串后再拼接
            result += str(s)

    return result


def print_cube(state: str):
    """
    打印 kociemba 格式的魔方状态 (54 字符串) 的展开图
    """
    if len(state) != 54:
        raise ValueError("状态字符串必须是 54 个字符")

    # 分割 6 个面
    U = state[0:9]
    R = state[9:18]
    F = state[18:27]
    D = state[27:36]
    L = state[36:45]
    B = state[45:54]

    def face_to_lines(face):
        return [face[i:i+3] for i in range(0, 9, 3)]

    U_lines, R_lines, F_lines, D_lines, L_lines, B_lines = map(face_to_lines, [U, R, F, D, L, B])

    # 打印展开图
    print()
    for line in U_lines:
        print(" " * 8 + " ".join(line))
    for l, f, r, b in zip(L_lines, F_lines, R_lines, B_lines):
        print(" ".join(l) + " " + " ".join(f) + " " + " ".join(r) + " " + " ".join(b))
    for line in D_lines:
        print(" " * 8 + " ".join(line))
    print()




def printf(*args):
   s=CS(*args);
   print_cube(s)

def solve(*args):
   s=C2D(CS(*args));
   r= kociemba.solve(s)
   print(r)

main.py

import mf

s=["绿橙蓝白白白红白蓝",
"红红红蓝红红橙黄蓝",
"黄蓝白绿绿红绿橙黄",
"白绿绿绿黄蓝橙黄黄",
"橙绿绿橙橙黄白红红",
"黄白白黄蓝蓝橙橙蓝"]

print("状态:")
mf.printf(*s)
print("操作:")
mf.solve(*s)

输出

D:\soft\Anaconda3\envs\platformio\python.exe C:\Users\PC\PycharmProjects\PythonProject\main.py 
状态:

        绿 橙 蓝
        白 白 白
        红 白 蓝
橙 绿 绿 黄 蓝 白 红 红 红 黄 白 白
橙 橙 黄 绿 绿 红 蓝 红 红 黄 蓝 蓝
白 红 红 绿 橙 黄 橙 黄 蓝 橙 橙 蓝
        白 绿 绿
        绿 黄 蓝
        橙 黄 黄

操作:
U2 D' R' L' U L' D R' F2 B L' B2 U' B2 D' R2 U2 R2 F2 D2 L2

进程已结束,退出代码为 0
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐