Su tarea es construir un intérprete para el lenguaje inútil :
Aquí están los requisitos funcionales:
- Todos los comandos descritos deben ser aceptados por el intérprete.
NO.
,NOOP
yINCLUDE-xxx
debe ser honrado.DONTUSEME(n)
debe tener su fecha base para ser fácilmente configurable a algo más razonable para fines de prueba.INCLUDE-xxx
debe poder generar cualquier comando con una probabilidad aproximadamente igual. Si genera aDONTUSEME(n)
, debe elegir aleatoriamente un valor pequeño para n.DONTUSEME(n)
Las ventanas deben sobrevivir a lasNO.
instrucciones. Consejo: genere un nuevo proceso para esas ventanas.BOOM!
yKABOOM!
debe hacer algo malo y aterrador, yKABOOM!
debe ser peor queBOOM!
. Pero esto no debe tomarse demasiado en serio, por lo que no debe ser algo destructivo, excesivamente disruptivo o difícil de deshacer. Por favor, no haga , no haga , y no haga que estas instrucciones ejecuten unrm -rf \
comando, ejecuten una bomba tenedor, instalen malware, corrompan datos en el sistema de archivos, o publiquen o descarguen contenido inapropiado de Internet, o cualquier otra cosa claramente abusiva.TURINGVSALONZO
debería ejecutarse como si de hecho estuviera haciendo lo que debería hacer. Consejo: Haz que al azar decida si duerme durante un tiempo aleatorio muy largo, o un tiempo aleatorio corto, o para siempre.- Todas las demás instrucciones predefinidas deben hacer algo diferente a las instrucciones antes mencionadas y diferentes entre sí, pero nunca algo peor que
BOOM!
oKABOOM!
. Lo que hacen exactamente depende de usted, pero una implementación simple solo generaría un mensaje de error u otro texto. - Debe proporcionar una manera fácil para que el usuario proporcione el programa que sería ejecutado por el intérprete. es decir, leer texto plano de un archivo o de
stdin
está bien. Leerlo desde un archivo cifrado en algún lugar de Internet no lo es.
Opcional:
- Puede inventar algunos comandos nuevos si lo desea, pero deben estar sujetos a las mismas reglas que los demás. No use esto para eludir las restricciones en
BOOM!
y /KABOOM!
o para vencerDONTUSEME(n)
. Y si inventa nuevos comandos, explique lo que hacen. - Debería pensar en lo que hace el intérprete si recibe información con comandos desconocidos (o incluso galimatías de bytes aleatorios completamente ilegibles).
- Aunque ninguna instrucción debe derrotar el
DONTUSEME(n)
comando, puede agregarle un interruptor de apagado. Simplemente no expongas eso en el idioma.
Tenemos algunos requisitos no funcionales para evitar abusos:
- Su entrada debe ser lo más completa y autocontenida posible. Esto significa que no debería ser simplemente una especie de instalador o un programa claramente incompleto. De esta manera, la descarga y el uso de bibliotecas como jQuery o paquetes de maven central está bien, pero la descarga de código arbitrario y paquetes de su servidor personalizado no lo está.
- Su entrada no debe obtener ningún contenido de esta misma página o de algún espejo o copia de esta página para hacer algún tipo de reflexión o para cualquier otro propósito. Esto es esencial para evitar que algún programa intente leer las respuestas de otros participantes a esta pregunta o intente interrumpir la pregunta o las respuestas de alguna manera.
- Su intérprete debe ser inmutable y no auto modificarse ni modificar su archivo de entrada. Pero, crear una copia mutante del intérprete o del archivo de entrada sin alterar el original está bien.
Y finalmente, considerando que:
- Se espera que los programas en las respuestas sean bastante inútiles incluso si son totalmente conformes;
- El lenguaje es (a propósito) muy poco especificado, y los que responden tienen muchas libertades que tomar y están incentivados para tomarlas;
- Los requisitos y las posibles implementaciones tienen muchos puntos subjetivos;
- El objetivo con esto es obtener diversión y creatividad.
Entonces, este es un concurso de popularidad , ¡y la respuesta más votada y totalmente conforme a las reglas gana! Por lo tanto, no necesita jugar golf u ofuscar su respuesta (pero puede hacerlo si lo desea). Solo asegúrese de publicar algo original y creativo para merecer los votos positivos, es decir, no publique entradas aburridas.
popularity-contest
interpreter
Victor Stafusa
fuente
fuente
Respuestas:
TI-BASIC
Hay un botón de matar para
DONTUSEME
, ¿puedes averiguar cuál es? :)fuente
:Goto 1
significa queBOOM!
es solo un no-op?INCLUDE-
.HTML + Javascript + jQuery + jQuery UI
La entrada debe darse en el área de texto y debe formatearse como cada comando en una línea. Los comandos no distinguen entre mayúsculas y minúsculas. Todos los comandos se implementaron completamente. Espero que lo disfrutes.
Puedes probarlo en http://jsfiddle.net/bCBfk/
Tiene un nuevo comando:
Otros spoilers:
fuente