Кубічно занадто нудно, щоб вручну писати будь-який код. Ваша задача полягає в тому, щоб перевести текст ASCII в кубічно вихідний код.
Кубічно
Це лише швидкий збіг кубічно; сховище має більш повне керівництво і деталі.
Кубічно це езоланг, про який я писав деякий час тому, призначений для болючого використання. Він містить два фрагменти пам'яті, куб Рубіка 3x3x3 та реєстр, який називається "блокнот".
Пам'ять
Внутрішній куб Рубіка ініціалізується так:
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
на лівому (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
також сума? Чи +
додається команда підсумовувати всі значення та ...?
@6
/ %6
просто безпосередньо друкує значення блокнота як символ / ціле число. @x
/ %x
(де x - будь-яке існуюче обличчя) додає всі значення на x
-вкладене обличчя та друкує суму як символ / ціле число. +
додає в регістр усі значення на вказаній обличчі.