Кубически слишком утомительно, чтобы вручную писать какой-либо код. Ваша задача - перевести текст ASCII в кубический исходный код.
кубично-
Это просто быстрое сокращение кубов; хранилище имеет более полное руководство и детали.
Кубически это esolang, который я написал некоторое время назад, разработанный, чтобы быть болезненным в использовании. Он содержит два куска памяти, кубик Рубика 3х3х3 и регистр, называемый «блокнотом».
Память
Внутренний кубик Рубика инициализируется так:
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-indexed). x1
будет работать x
на левом (1-индексированном) лице и так далее.
Выполнение любой команды с помощью 6
выполнит эту команду со значением блокнота. Выполнение любой команды с любым целым числом более 6 приведет к ошибке.
Вот несколько примеров команд:
R1
- поверните правую грань по часовой стрелке на 90 °, чтобы внутренний куб выглядел как во втором примере вышеR11
- поверните ПРАВУЮ грань по часовой стрелке на 90 ° дважды, идентичноR2
+0
- добавить все значения лица UP в блокнот+000
- добавить все значения лицевой стороны UP в блокнот три раза@6
- напечатать несуществующее 6-ое индексируемое лицо (память) как символ%4
- вывести сумму всех значений на грани BACK в виде целого числа
Полный список команд и синтаксиса доступен в хранилище .
Вызов
Вы возьмете текст ASCII в качестве входных данных и напечатаете кубическую программу в качестве выходных данных.
Примеры (украденные здесь и здесь ):
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 секунд (никаких переборов, которые занимают недели).
- Ваша программа должна вывести действительный кубический код, который заканчивается менее чем за 180 секунд.
- Ваша программа будет принимать ввод через стандартный ввод, если вы не хотите связываться с тестовым драйвером.
- Ваша программа должна выводить кубический код, который при запуске выдает только ввод вашей программы. ಠ_ಠ
счет
Вы протестируете свою программу с 100 псевдослучайными строками псевдослучайной длины. (Предоставляется сценарий bash, который сделает это за вас.) Вот как вы забьете:
- Пусть длина выходной программы будет o .
- Пусть длина входной строки будет l .
- Пусть переменная r будет результатом o / l .
- Найти среднее значение всех r : (r 1 + r 2 + r ... + r 100 ) / 100 .
Протестируйте с помощью этого скрипта. Вам придется изменить его в соответствии с инструкциями. Обратите внимание, что программа не проверяет, является ли на выходе правильный кубический код. Если вы не можете заставить скрипт работать, я могу помочь. Пинг меня в кубическом чате .
@6
- печатать сумму несуществующего 6-го индексируемого лица (блокнота) в виде символа" точнее? Это %4
тоже сумма? Являются ли +
команды sum face, затем добавить это ко всем значениям или ...?
@6
/ %6
просто печатает значение блокнота как символ / целое число. @x
/ %x
(где x - любое существующее лицо) добавляет все значения на x
-индексированном лице и печатает сумму в виде символа / целого числа. +
добавляет все значения указанного лица в регистр.