Джо - ваш средний разработчик BF. Он собирается проверить изменения своего кода в их хранилище, когда ему позвонит его начальник. «Джо! Машина нового клиента сломана! Интерпретатор brainfuck устанавливает все ячейки в случайные значения перед выполнением программы. Нет времени, чтобы исправить это, ваш код должен будет с этим справиться». Джо не задумывается об этом и собирается написать программу, которая обнулит первый миллион ячеек, когда его начальник снова его прерывает - «... и не думайте об использовании грубой силы, код должен будь как можно меньше. " Теперь ты должен помочь бедному Джо!
Характеристики
- Вы получите действительный код Brainfuck в качестве ввода
- Ваша программа затем модифицирует код так, чтобы он работал на рандомизированном интерпретаторе бредов
- Это означает, что перед выполнением программы ячейки могут быть установлены на любое значение.
- Новая программа должна иметь одинаковое поведение независимо от начальных условий.
- Интерпретатор будет иметь значение максимальной ячейки 255 с переносом и ленту бесконечной длины.
счет
Ваша оценка в 10 раз больше размера компилятора в байтах плюс сумма размеров тестового набора . Очевидно, что выигрывает самый низкий балл. Чтобы смягчить последствия оптимизации тестовых примеров, я оставляю за собой право изменить тестовые примеры, если я что-то подозреваю, и, вероятно, сделаю это до выбора победителя.
Тестовые случаи
(Я получил их со страницы esolangs и этой веб-страницы: http://www.hevanet.com/cristofd/brainfuck/ ). Также спасибо @Sparr за последний контрольный пример.
- Привет мир:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
- Обратный вход:
>,[>,]<[.<]
- Полномочия Двух (Бесконечный Поток):
>++++++++++>>+<+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<]>.>[->[ <++>-[<++>-[<++>-[<++>-[<-------->>[-]++<-[<++>-]]]]]]<[>+<-]+>>]<<]
- Квадраты до 10000:
++++[>+++++<-]>[<+++++>-]+<+[>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+>>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]<<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]
- Поток Фибоначчи:
>++++++++++>+>+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[[-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>]<<<]
- Последовательность ASCII до ввода:
,[.[>+<-]>-]
(для этого требуется изменение количества ячеек в зависимости от ввода)