Cubically过于繁琐,无法手动编写任何代码。您的挑战是将ASCII文本转换为Cubically源代码。
立体地
这只是Cubically的一个快速失败;该存储库具有更完整的指南和详细信息。
奇怪的是我前段时间写的一种esolang,使用起来很痛苦。它包含两个内存,一个3x3x3 Rubik的多维数据集和一个称为“记事本”的寄存器。
记忆
内部Rubik's Cube的初始化如下:
000
000 top face
000
111222333444 left, front, right, and back faces, respectively
111222333444
111222333444
555
555 down face
555
在右表面上顺时针旋转90°后,内存立方体将如下所示:
002
002
002
111225333044
111225333044
111225333044
554
554
554
指令
非整数字符设置默认命令。对于再次设置默认命令之前的每个整数,将使用该整数执行命令。例如,x524y312
将先执行x
5 指令,然后执行2指令,再执行4指令,再执行y
3 指令,然后执行1指令,再执行2指令。
命令使用的整数表示面部索引。因此x0
将x
在UP(0索引)面上执行。x1
会执行x
在LEFT(1索引)面上执行,依此类推。
执行任何命令6
都会在记事本值上执行该命令。执行任何大于6的整数的命令将导致错误。
以下是一些示例命令:
R1
-将右面顺时针旋转90°,以使内部立方体看起来像上面的第二个示例R11
-将右面顺时针旋转90°两次,与R2
+0
-将UP面的所有值添加到记事本中+000
-将UP面的所有值添加到记事本中三次@6
-将不存在的第6索引面(记忆)打印为字符%4
-将背面的所有值之和打印为整数
存储库中提供了命令和语法的完整列表。
挑战
您将以ASCII文本作为输入,并打印一个Cubically程序作为输出。
Input -> Output
Hello, World! -> +53@6+1F2L2+0@6L2F2U3R3F1L1+2@66L3F3R1U1B3+0@6:4U1R1+00@6-000@6*0-4+000@6-00@6+2-000000@6-5+4000@6-00@6/0+00@6:0+0/0+00@6
1$2$3$4$5$6$7$8$9$10$ -> B1+2/2%6@4+00/0%6@4+00/1%6@4+21/1%6@4+30/0%6@4+22/1%6@4+22/1%6@4+40/1%6@4+52/1%6@4+42/1%6@4
规则
- 您的程序可能不包含包含100个测试用例的译文的字典。
- 您的程序必须在不到180秒的时间内完成(没有需要数周时间的强力程序)。
- 您的程序必须输出有效的Cubically代码,并在180秒内完成。
- 您的程序将通过标准输入进行输入,除非您想弄乱测试驱动程序。
- 您的程序必须输出Cubically代码,该代码在运行时仅产生程序输入。ಠ_ಠ
计分
您将使用100个伪随机长度的伪随机字符串测试您的程序。(提供了一个bash脚本来为您完成此操作。)这是您的得分方式:
- 令输出程序的长度为o。
- 令输入字符串的长度为l。
- 令变量r为o / l的结果。
- 求出所有r的平均值:(r 1 + r 2 + r ... + r 100)/ 100。
使用此脚本进行测试。您必须按照说明进行修改。请注意,该程序不会检查输出是否有效的Cubically代码。如果您无法使脚本正常工作,我可以提供帮助。在Cubically聊天室给我ping。
@6
-将不存在的第6索引面(记事本)的总和打印为字符”会更准确吗?是%4
还一笔?是+
命令求和,然后将其添加到所有值还是...?
@6
/ %6
只是直接将记事本值打印为字符/整数。@x
/ %x
(其中x是任何现有的面孔)将所有值添加到x
-indexed面孔并将其总和打印为字符/整数。+
将指定面上的所有值添加到寄存器。