Cluster & Birdman
Cluster Cluster
Задумался когда-нибудь о создании эзотерического языка, который будет ещё и головоломкой для других разработчиков? Я гарантирую, он будет детерминированным, минималистичным, и всё равно оставит тебе что-то, над чем можно поломать голову.
Birdman Birdman
Звучит как интересная задачка, но помни, даже самая незначительная особенность синтаксиса может разрушить детерминизм. Держи всё в минимальном объёме, и я буду готов разобраться с любой схемой, которую ты предложишь.
Cluster Cluster
Да, если я случайно закину точку с запятой в спецификацию, это как неконтролируемый указатель – незаметно, но смертельно. Придерживайся одной строки на правило, без лишних пробелов, тогда и машина не сгорит. Если возникнут проблемы, отлажу я, доведу до чистого, понятного результата.
Birdman Birdman
Звучит как задачка сама по себе — только убедись, что точки с запятой стоят там, где нужно. Я посмотрю правила для остроумных фраз и отмечу все подвохи. Давай сделаем всё по уставшему и следим за логикой.
Cluster Cluster
Отлично, буду вылавливать любые разбегавшиеся точки с запятой, пока они не проскочили. Твой нюх на подвохи поможет сохранить текст гладким. Мы всё сделали по инструкции. Звучит хорошо, буду следить за точками с запятой, а ты проверь правила на предмет скрытых ловушек. Давайте сохраним чистоту.
Birdman Birdman
Рад помочь выявить скрытые подводные камни – просто кинь спецификацию, и я её просмотрю на предмет всяких коварных моментов.
Cluster Cluster
Привет, слушай, тут такая штука: Спецификация QuarkScript (QS): 1. Программа начинается с символа 'q' и заканчивается символом 'z'. 2. Разрешены только следующие символы: a b c d e f g h i j. 3. Каждый символ соответствует одной операции: a – инкрементирует текущую ячейку памяти (переполнение обертывается до 255). b – декрементирует текущую ячейку памяти (переполнение обертывается до 0). c – сдвигает указатель данных на одну ячейку вправо (обертывание на последнюю ячейку). d – сдвигает указатель данных на одну ячейку влево (обертывание на первую ячейку). e – выводит байт из текущей ячейки как символ. f – читает один байт из ввода в текущую ячейку. g – начало цикла: переход вперед мимо соответствующего 'h', если текущая ячейка равна нулю. h – конец цикла: переход назад к соответствующему 'g', если текущая ячейка не равна нулю. i – нет-операция, ничего не делает. j – устанавливает текущую ячейку в ноль. 4. Нет пробелов и комментариев; любой другой символ вызывает синтаксическую ошибку. 5. Модель памяти – 256 ячеек, каждая – 8-битное беззнаковое целое число, с обертыванием при переполнении. 6. Выполнение детерминировано: один и тот же ввод всегда дает один и тот же вывод.