python魔方库kociemba
·
简单测试
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
更多推荐



所有评论(0)