[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+
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值