二十七:魔方解算器

[算法,图书馆,麻省理工学院,程序][建议标签]
版本[RSS(RSS)] 0.0.0
依赖关系 基础(>=4.8 && <5),容器(>=0.5),deepseq公司,目录,文件路径,(>=1.0),monad循环,Monad随机,mtl公司(>=2.1),新类型(>=0.2),optparse应用程序,原始的(>=0.6),参考-fd(>=0.4),template-haskell模板,时间(<1.6),变压器,二十七,矢量(>=0.10)[细节]
许可证 麻省理工学院
作者 李瑶霞
维护人员 lysyxia@gmail.com
修订过的 第1次修订制造商利克西亚语2016年5月17日16:01:52Z
类别 算法
主页 https://github.com/lysyxia/twentyshaven
已上传 通过利克西亚语2016年3月16日17:40:35Z
分配
可执行程序 二十七
下载 总共1018个(过去30天内有4个)
额定值 (尚未投票)[估算人贝叶斯平均]
您的评分
  • λ
  • λ
  • λ
状态 可用文档[生成日志]
上次成功报告时间:2016年3月16日[所有1个报告]

27年自述-0.0.0

[返回包描述]

二十七

Haskell中的魔方解算器。

灵感来自Herbert Kociemba的多维数据集资源管理器.

其主要思想是为每个配置预计算移动次数需要放置组成3x3魔方的27个立方体的某些子集在正确的位置和/或正确的方向。这给出了下限用于在加扰立方体图中进行类似A⋆的搜索。


默认情况下,使用次优的“两阶段”解算器,因为它运行得相当快。它目前在大约一个中解决了1000个随机立方体(均匀分布)分钟。然而,最优解算器速度很慢,需要五分钟解一个随机立方体需要两个小时(平均18步)。

解算器必须预先计算一定数量的查找表,这些查找表可以是存储在文件中。这些表需要15秒钟来计算和称重13MB对于两阶段求解器,将其与大约8小时和2GB进行比较以获得最佳一个!

您可以使用中的校验和检查生成的文件ts-表格.sha256.压缩存档ts-tables.zip格式(723MB)的所有预计算表在分支机构中可用可提取数据通过吉特磅/英尺.将其解压缩$主页/.27/,或任何地方(参见下面的用法)。

使用情况摘要

二十七[-p][--strict][-d DIR][--optimal]
  • 对于第一次调用,请使用-第页预计算不存在的查找表,否则,当二十七尝试加载它们;
  • --严格的立即加载表,否则将“根据需要”加载(因此你也可以发送一个立方体来求解);
  • -d方向指定读取和写入表的目录(默认值:$主页/.27/).

输入是逐行读取的。

输入格式

线条可以是以下之一:

  • 一组(几乎任何)6中的54个字符的字符串(忽略空格)字符。然后每个字符对应于一个facelet的颜色顺序如下所示。

    输出:解读它的一系列动作。

    Facelet以9为基数进行编号。0,1,2,3,4,5对应于U、 左、右、中、右.

    00 01 022005年4月3日06 07 0810 11 12  20 21 22  30 31 32  40 41 4213 14 15 23 24 25 33 34 35 43 44 4516 17 18  26 27 28  36 37 38  46 47 4850 51 5253 54 5556 57 58
  • 一个圆点.然后是一系列移动来扰乱立方体。

    基本动作由中的一个字母给出[ULFRBD],或其小写相对应的人。每个字母对应于给定面部(上、左、前、右、后、下)。方向是直接注视转向面时确定。

    每个基本动作都有一个可选后缀[23']允许指定一半转弯(例如。,U2乐队),相当于两个四分之一圈的序列(UU(单位)),或a逆时针四分之一圈(例如。,3号机组U’)相当于一个序列顺时针方向三个(UUU(用户单位)).

    输出:如果开始应用移动,则对结果立方体的描述从求解的立方体(采用上述格式,带字母ULFRBD公司作为颜色)。

  • 关键字随机的,随机的.

    输出:随机可解决的具有均匀分布的立方体。

  • 关键字退出(或文件结束)终止交互式会话。

例子

初始化

$echo-quit |二十七-p--严格

例子

示例.txt:

qwqwqw qwq雷雷尔类型雷雷尔qwqwqwqqerqrerer tytytyt重读者ytytyty wqwqwqwqwqwBBBBUBBBB UUUULUUU RRRRRRR DDDDDD LLLLL FFFFDFFFDDDFUDLRB FUFDLLLRR UBLBFDFUD ULBFRULLB RRRLBBRUB UBFFDFDRU(DDDFUDRLB浮雕)111121111 333313333 222232222 444454444 666646666 555565555111111214 223222222 131333333 344444444 555555555 666666666.udddlrrrbfffuddd文件随机的,随机的

然后输出如下:

二十七美元<examples.txtU2 D2 L2 R2 F2 B2楼Facelets[6,18,11](“qtq”)与任何常规立方都不匹配。U D F B L R U2 R2 F2 R2 U2 L2 B2 U'D'B2地下室U L B’L R2 D R U2 F U2 L2 B2 U B2 D’B2 U R2 U L2 R2 UU D L R F B U2 B2 L2 F2 D2 R2 U“D”L2L U’F2 U F2 U L U’L2 D F2 D’F2BBBBUBBBB UUUULUUU RRRRRRR DDDDDD LLLLL FFFFDFFFBDLLUFBUD LBUBLURFL RLBFFBFRU RLFURLR UBDRBRDDU DFBDDDFLF(布尔布杜勒布尔夫)

当前启发式的详细信息

距离估计基于对应于以下内容的陪集元素。

双相

第1阶段

  • 角方向×UD切片
  • 边缘方向×UD切片

可以存储到第1阶段设定的目标的实际距离,但目前的速度似乎已经足够了。

第2阶段

  • 角点排列×UD切片排列(第2阶段)
  • UD边缘置换(第2阶段)×UD切片置换(第二阶段)

最优的

  • 角方向×边方向×XY切片置换,用于{UD、LR、FB}中的XY
  • 角方向×角排列