Ваша задача - создать переводчика на бесполезный язык:
Вот функциональные требования:
- Все описанные команды должны быть приняты переводчиком.
NO.
,NOOP
ИINCLUDE-xxx
должны быть выполнены.DONTUSEME(n)
должна иметь базовую дату, чтобы ее можно было легко настроить на что-то более разумное для целей тестирования.INCLUDE-xxx
должен быть в состоянии генерировать любую команду с примерно равной вероятностью. Если он генерирует aDONTUSEME(n)
, он должен случайным образом выбрать небольшое значение для n.DONTUSEME(n)
Окна должны выдержатьNO.
инструкцию. Совет: создайте новый процесс для этих окон.BOOM!
иKABOOM!
должен делать что-то плохое и страшное, иKABOOM!
должно быть хуже, чемBOOM!
. Но это не должно восприниматься слишком серьезно, поэтому оно не должно быть чем-то разрушительным, чрезмерно разрушительным или трудно разрушаемым. Пожалуйста, не выполняйте и не заставляйте эти инструкции выполнятьrm -rf \
команду, запускать бомбу-вилку, устанавливать вредоносные программы, повреждать данные в файловой системе, публиковать или загружать неприемлемый контент из Интернета, или любые другие явные оскорбительные действия.TURINGVSALONZO
должен работать так, как если бы он действительно делал то, что должен делать. Совет: сделайте так, чтобы он случайно решил, будет ли он спать в течение случайного очень долгого времени, или случайного короткого времени, или навсегда.- Все остальные предопределенные инструкции должны делать что-то кроме вышеупомянутых инструкций и отличаться друг от друга, но никогда не должны быть чем-то хуже
BOOM!
илиKABOOM!
. Что именно они делают, зависит только от вас, но простая реализация просто выдаст сообщение об ошибке или какой-то другой текст. - Вы должны предоставить пользователю простой способ предоставить программу, которая будет запускаться переводчиком. т.е. чтение текста из файла или из
stdin
в порядке. Считать его из зашифрованного файла где-то в интернете нельзя.
Необязательный:
- Вы можете изобрести несколько новых команд, если хотите, но они должны подчиняться тем же правилам, что и другие. Не используйте это, чтобы обойти ограничения
BOOM!
иKABOOM!
или победитьDONTUSEME(n)
. И если вы изобретаете новые команды, объясните, что они делают. - Вы должны подумать о том, что делает интерпретатор, если он получает входные данные с неизвестными командами (или даже совершенно непонятными случайными байтами).
- Хотя никакая инструкция не должна побеждать
DONTUSEME(n)
команду, вы можете добавить для нее переключатель уничтожения. Только не раскрывайте это на языке.
У нас есть несколько нефункциональных требований, чтобы избежать злоупотреблений:
- Ваша запись должна быть как можно более полной и содержать автоматически. Это означает, что это не должен быть просто какой-то инсталлятор или явно неполная программа. Таким образом, загрузка и использование библиотек, таких как jQuery или пакетов, из maven central - это нормально, но загрузка произвольного кода и пакетов с вашего собственного сервера - нет.
- Ваша запись не должна получать какой-либо контент с этой самой страницы или с какого-либо зеркала или копии этой страницы, чтобы сделать какое-то отражение или для каких-либо других целей. Это важно, чтобы избежать какой-либо программы, которая пытается прочитать ответы других участников на этот вопрос или попытаться нарушить вопрос или ответы каким-либо образом.
- Ваш переводчик должен быть неизменным и не изменять самостоятельно или изменять свой входной файл. Но создание мутантной копии интерпретатора или входного файла без изменения оригинала - это нормально.
И, наконец, учитывая, что:
- Ожидается, что программы в ответах будут довольно бесполезными, даже если они полностью совместимы;
- Язык (нарочно) очень недооценен, и у отвечающих есть много свобод, и их поощряют;
- Требования и возможные реализации имеют много субъективных моментов;
- Целью этого является просто развлечься и творчества.
Затем, это конкурс популярности , и выигрывает ответ с наибольшим количеством голосов, полностью соответствующий правилам! Таким образом, вам не нужно играть в гольф или запутывать свой ответ (но вы можете сделать это, если хотите). Просто не забудьте опубликовать что-то оригинальное и креативное, чтобы заслужить положительные отзывы, то есть, пожалуйста, не публикуйте неубедительные скучные записи.
popularity-contest
interpreter
Виктор Стафуса
источник
источник
Ответы:
TI-BASIC
Есть кнопка для уничтожения
DONTUSEME
, вы можете выяснить, какая это? :)источник
:Goto 1
чтоBOOM!
это просто неоперация?INCLUDE-
.HTML + Javascript + jQuery + jQuery UI
Ввод должен быть дан в текстовой области и должен быть отформатирован как каждая команда в строке. Команды не чувствительны к регистру. Все команды были полностью реализованы. Я надеюсь, что вам понравится.
Вы можете попробовать это на http://jsfiddle.net/bCBfk/
У него есть одна новая команда:
Другие спойлеры:
источник