科辛巴

这个Python包包含了Herbert Kociemba求解魔方的两阶段算法的两个等价实现(在C和Python中)。

原始java实现可以在这里找到:http://kociemba.org/download.htm。

这些端口非常简单(不说是哑的),而且很可能是可以优化的。但是它们已经在我们的魔方解题机(FAC System Solver和Meccano Rubik's Shrine)中得到了广泛的测试,所以请相信算法是有效的

nb请注意,两阶段算法不能保证生成的解是尽可能短的。相反,它会在很短的时间内给你一个“足够好”的解决方案例如,您可以在这个库的顶部实现额外的检查,以便在多维数据集已经解决的情况下不产生任何移动。

安装

此软件包在PYPI上发布,可使用以下软件包安装:

$ pip install kociemba

它在Python2.7和3.3+下进行了测试

基于Unix的系统

您可能需要事先安装libffi系统库。例如,在基于debian的发行版(例如raspbian)上,您将运行sudo apt-get install libffi-dev。

窗口

库应该可以在windows上运行,但是目前还没有自动测试:travis cidoesn't have windows support。

正常的pip install kociemba(或者python 3.3+的pip3 install kociemba)应该可以工作,但是您需要首先从微软安装免费的构建工具。检查以下链接:

用法

该包只公开一个函数solve(),该函数接受多维数据集定义字符串并以标准表示法返回解决方案字符串(见下文)。

可选的第二个参数允许对特定模式进行求解。>>>importkociemba>>>kociemba.solve('DRLUUBFBRBLURRLRUBLRDDFDLFUFUFFDBRDUBRUFLLFDDBFLUBLRBD')u"D2 R' D' F2 B D R2 D2 R' F2 D' F2 U' B2 L2 U2 D R2 U">>>kociemba.solve('FLBUULFFLFDURRDBUBUUDDFFBRDDBLRDRFLLRLRULFUDRRBDBBBUFL','BBURUDBFUFFFRRFUUFLULUFUDLRRDBBDBDBLUDDFLLRRBRLLLBRDDF')u"R' D2 R' U2 R F2 D B2 U' R F' U R2 D L2 D' B2 R2 B2 U' B2"

独立工具

使用pip安装时,kociemba还将注册同名的命令行工具。所以你也可以这样使用它:

$ kociemba

立方体字符串表示法

立方体的面板位置的名称(字母表示上、左、前、右、后和下):|************|

|*U1**U2**U3*|

|************|

|*U4**U5**U6*|

|************|

|*U7**U8**U9*|

|************|

************|************|************|************

*L1**L2**L3*|*F1**F2**F3*|*R1**R2**R3*|*B1**B2**B3*

************|************|************|************

*L4**L5**L6*|*F4**F5**F6*|*R4**R5**R6*|*B4**B5**B6*

************|************|************|************

*L7**L8**L9*|*F7**F8**F9*|*R7**R8**R9*|*B7**B8**B9*

************|************|************|************

|************|

|*D1**D2**D3*|

|************|

|*D4**D5**D6*|

|************|

|*D7**D8**D9*|

|************|

立方体定义字符串“UBL…”表示在位置U1中我们有U颜色,在位置U2中我们有

b-色,在u3位置我们有l-色等。根据顺序,U1,U2,U3,U4,U5,U6,U7,U8,U9,R1,R2,

R3, R4, R5, R6, R7, R8, R9, F1, F2, F3, F4, F5, F6, F7, F8, F9, D1, D2, D3, D4, D5, D6, D7, D8, D9, L1, L2, L3, L4,

L5,L6,L7,L8,L9,B1,B2,B3,B4,B5,B6,B7,B8,B9

例如,一个已求解立方体的定义是UUUUUUUUURRRRRRRRRFFFFFFFFFDDDDDDDDDLLLLLLLLLBBBBBBBBB

解决方案字符串由空格分隔的部分组成,每个部分表示单个移动:一个字母本身意味着顺时针旋转90度

后跟撇号的字母表示将该面逆时针旋转90度。

后面带有数字2的字母表示将该面旋转180度

例如R U R’ U R U2 R’ U

C版

c源位于ckociemba文件夹中。在这个目录中运行make将编译一个独立的二进制文件。它接受多维数据集表示作为命令行参数,并将解决方案写入标准输出。当然,您可以在项目中直接使用ckociemba源代码

性能

如果可能,kociemba将在引擎盖下使用c实现。如果出了问题(C版本无法导入),它将自动返回到纯Python实现。不过,速度会慢得多

测试

进行测试,cl打开存储库并运行:

$ python setup.py test

多亏了@JarheadJoe对Windows支持的贡献

欢迎加入QQ群-->: 979659372

推荐PyPI第三方库

kociemba算法c语言,Python kociemba包_程序模块 - PyPI - Python中文网相关推荐

  1. python中torch模块下载,Python qtorch包_程序模块 - PyPI - Python中文网

    #qpytorch qpytorch是一个低精度的算法模拟软件包. 火把.它是为支持低精度机床的研究而设计的 学习,尤指在低精度训练中的研究 值得注意的是,qpytorch支持在训练过程中量化不同的数 ...

  2. python renamer模块_Python smart-image-renamer包_程序模块 - PyPI - Python中文网

    使用包含在中的exif数据智能地批量重命名图像的脚本 安装 要安装智能图像重命名程序: 推荐的方法是通过pip.pip install smart-image-renamer 否则像其他python包 ...

  3. python eel_Python django-eel包_程序模块 - PyPI - Python中文网

    黄鳝 django eel是一个用于html gui应用程序的django应用程序,具有简单的python/js互操作.它是Eel的移植版本. 回购分行master:django鳗鱼的master分支 ...

  4. python安装dill_Python dill包_程序模块 - PyPI - Python中文网

    关于dill dill扩展python的pickle模块以进行序列化和反序列化 python对象的大多数内置python类型.串行化 是将对象转换为字节流的过程,反之亦然 其中之一是将字节流转换回py ...

  5. python repusts模块_Python tslearn包_程序模块 - PyPI - Python中文网

    tslearn是一个python包,它为分析时间序列提供机器学习工具. 这个包基于scikit-learn.numpy和scipy库. 依赖关系Cython numpy numba scipy sci ...

  6. inflect java_Python lemminflect包_程序模块 - PyPI - Python中文网

    lemminflect 一个用于英文引理和屈折的python模块. 关于 lemminflect使用字典方法对英语单词进行柠檬化,并将其屈折成用户提供的格式通用依赖项或penn treebank标记. ...

  7. python cmd下载模块_Python cmd包_程序模块 - PyPI - Python中文网

    CMDY 从python运行命令的一个方便的包 安装# latest version pip install git+https://github.com/pwwang/cmdy # released ...

  8. python queue模块安装_Python queue包_程序模块 - PyPI - Python中文网

    沃特?另一个消息队列? 考虑到消息队列的激增,人们可能倾向于相信 发明更多不是答案.使用现有的解决方案是 多次尝试与大多数现有的消息队列产品. 其他的失败(对于我们的用例). queuey是用来处理大 ...

  9. python ssh登陆模块_Python sshh包_程序模块 - PyPI - Python中文网

    sshh是一个ssh帮助工具,用于在ssh代理中批量注册ssh私钥. sshh的主要目的是避免在 在ssh代理中注册的密钥数超过一定数量.当 当服务器设置私钥上限时,超过了密钥尝试的上限 严格的尝试. ...

最新文章

  1. 55_pytorch,自定义数据集
  2. MyEclipse10.0
  3. Tomcat容器、JSP和Servlet
  4. java发送get post请求_【工具】java发送GET、POST请求
  5. 51单片机c语言显示hello,51单片机控制动态数码管显示12345和HELLO字样的设
  6. D3d/opengl texture yuv yuv420p nv12 yv12 等等 显示 以及传入shaderresource
  7. 【web前端性能优化】12.css sprite(图片精灵)-雪碧图实现原理
  8. VTCP QIO技术解析
  9. mac英文输入模式下不能长按连续输入
  10. Cron表达式学习:每天十二点执行一次:0 0 12 * * ?
  11. vite和webpack的区别
  12. python-qbittorrent库下载电影学习记录(含基本使用和常用函数)
  13. Linux刻录光盘win10认不到,Win10不能读取DVD光驱和刻录光盘解决方法
  14. QWebEngineView如何忽略SSL证书错误
  15. 优秀课程案例:使用Scratch制作打弹球游戏2-得分过关
  16. nginx php cgi.sock,nginx中unix:/tmp/php-cgi.sock错误解决解决
  17. 无法删除状态为Dead的容器
  18. 电子秤结构分析与设计
  19. 使用c#封装海康SDK出现无法加载 DLL“..\bin\HCNetSDK.dll”: 找不到指定的模块
  20. 抓取服务器作业文档不存在,易飞ERP客户问题集.doc

热门文章

  1. html怎么转换成asp.net,Asp.net中将Word文件转换成HTML的方法
  2. kafka python_kafka python
  3. python模块typing的作用
  4. JavaScript 真值和假值
  5. getchwd() 函数返回当前工作目录。
  6. vue-cli构建的项目手动添加eslint配置
  7. 对上一篇博客问题的回应
  8. 通过在Global.asax文件中配置Application来统计的方法
  9. HttpHandler和HttpModule 心得介绍
  10. rtt面向对象oopc——2.对象容器理解和rtt类的联系