[Python]不使用kociemba库解魔方
前言
说到魔方,python有个现成的库kociemba,但是由于版本限制严重+需要vc2015环境,最后折腾半天还是未能成功安装,放弃之,网上找到java版本的算法可读性较好(出处不详,文件保留了作者信息),随之做了一些修正以输出想要的结果
思路
python通过传参调用java返回解法步骤给python程序
测试效果
-
魔方打乱后的平面展开信息
-
解法计算结果
-
解法验证后的结果
部分代码
主程序:Python3.8
- Mofang.py
# -*- coding: utf-8 -*-
import os
import sys
def getDetailStr(mofang,faceInfo):
#处理当前数据为java所用
mofangDetail=''
for face in mofang:
for cube in range(9):
mofangDetail+=faceInfo.get(mofang[face][cube])
return mofangDetail
def getSlove(solve):
#处理java求解后传过来的参数
solve=solve.split('-')
solve.pop()
return convertSlove(solve)
def convertSlove(solve):
#单字符无后缀表示顺时针,后缀'表示逆时针,无数字表示1次,数字2表示2次
solveConvert=''
for solveStep in solve:
cubeDirect=''
cubNum='1次'
cubRotate='顺时针旋转 '
for solveStepStr in solveStep:
if solveStepStr=='L':
cubeDirect='左侧 '
elif solveStepStr=='R':
cubeDirect='右侧 '
elif solveStepStr=='F':
cubeDirect='前面 '
elif solveStepStr=='B':
cubeDirect='后面 '
elif solveStepStr=='U':
cubeDirect='上面 '
elif solveStepStr=='D':
cubeDirect='下面 '
elif solveStepStr=='2':
cubNum='2次'
elif solveStepStr=="'":
cubRotate='逆时针旋转 '
solveConvert+=cubeDirect+