Interpretar DOGO
DOGO es un lenguaje de programación menos conocido. Si bien el DOGO original (un lenguaje de broma de una publicación de Usenet) nunca se ha implementado, se ha creado un lenguaje similar. Los comandos para el idioma son:
+===========+================================================================+
| Command | Description |
+===========+================================================================+
| SIT | If the value of the current memory cell is 0, jump to STAY. |
+-----------+----------------------------------------------------------------+
| STAY | If the value of the current memory cell is not 0, jump to SIT. |
+-----------+----------------------------------------------------------------+
| ROLL-OVER | Select the next operation from the operation list. |
+-----------+----------------------------------------------------------------+
| HEEL | Execute the currently selected operation. |
+-----------+----------------------------------------------------------------+
Las operaciones son:
+========+=======================================================+====+
| Number | Description | BF |
+========+=======================================================+====+
| 0 | Increment current memory cell. | + |
+--------+-------------------------------------------------------+----+
| 1 | Decrement current memory cell. | - |
+--------+-------------------------------------------------------+----+
| 2 | Move to next memory cell. | > |
+--------+-------------------------------------------------------+----+
| 3 | Move to previous memory cell. | < |
+--------+-------------------------------------------------------+----+
| 4 | Input a byte and store it in the current memory cell. | , |
+--------+-------------------------------------------------------+----+
| 5 | Output the current memory cell as ASCII. | . |
+--------+-------------------------------------------------------+----+
Ejemplos
Hola Mundo:
roll-over roll-over heel roll-over roll-over roll-over roll-over heel heel heel
heel heel heel heel heel heel sit roll-over roll-over roll-over heel roll-over
roll-over roll-over heel heel heel heel heel heel heel heel roll-over roll-over
heel roll-over roll-over roll-over roll-over roll-over heel roll-over roll-over
roll-over roll-over roll-over stay roll-over roll-over roll-over heel roll-over
roll-over heel roll-over roll-over roll-over heel roll-over roll-over roll-over
roll-over heel heel heel heel heel heel heel sit roll-over roll-over roll-over
heel roll-over roll-over roll-over heel heel heel heel roll-over roll-over heel
roll-over roll-over roll-over roll-over roll-over heel roll-over roll-over
roll-over roll-over roll-over stay roll-over roll-over roll-over heel roll-over
roll-over roll-over heel roll-over roll-over roll-over roll-over roll-over heel
roll-over heel heel heel heel heel heel heel roll-over roll-over roll-over
roll-over roll-over heel heel roll-over heel heel heel roll-over roll-over
roll-over roll-over roll-over heel roll-over roll-over roll-over heel heel heel
roll-over roll-over roll-over roll-over heel heel heel heel heel heel heel heel
sit roll-over roll-over roll-over heel roll-over roll-over roll-over heel heel
heel heel roll-over roll-over heel roll-over roll-over roll-over roll-over
roll-over heel roll-over roll-over roll-over roll-over roll-over stay roll-over
roll-over roll-over heel roll-over roll-over heel roll-over roll-over roll-over
heel heel heel roll-over roll-over roll-over roll-over heel heel heel heel heel
heel heel heel heel heel sit roll-over roll-over roll-over heel roll-over
roll-over roll-over heel heel heel heel heel heel heel heel heel roll-over
roll-over heel roll-over roll-over roll-over roll-over roll-over heel roll-over
roll-over roll-over roll-over roll-over stay roll-over roll-over roll-over heel
roll-over roll-over roll-over roll-over heel heel heel roll-over roll-over
roll-over roll-over heel roll-over roll-over roll-over roll-over heel heel heel
heel roll-over roll-over heel roll-over heel heel heel roll-over roll-over
roll-over roll-over roll-over heel roll-over roll-over heel heel heel heel heel
heel roll-over roll-over roll-over roll-over heel roll-over roll-over heel heel
heel heel heel heel heel heel roll-over roll-over roll-over roll-over heel
roll-over roll-over roll-over heel heel roll-over roll-over roll-over roll-over
heel roll-over roll-over roll-over roll-over roll-over heel
Reglas
- Cada presentación debe ser un programa completo o una función. Si es una función, debe ser ejecutable solo necesitando agregar la llamada a la función en la parte inferior del programa. Cualquier otra cosa (por ejemplo, encabezados en C), debe incluirse.
- Si es posible, proporcione un enlace a un sitio en línea donde se pueda probar su código.
- Su programa no puede escribir nada
STDERR
(o algo similar). - Puede tomar información de
STDIN
(o la alternativa más cercana en su idioma), o como argumento. - Las lagunas estándar están prohibidas.
Puntuación
Los programas se puntúan según los bytes . El conjunto de caracteres predeterminado es UTF-8; si está utilizando uno diferente, especifique.
Aparte de eso, este es el código de golf , ¡y el conteo de bytes más bajo se considerará el ganador!
Envíos
Para asegurarse de que su respuesta se muestre, comience con un título, usando la siguiente plantilla de Markdown:
# Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Si desea incluir varios números en su encabezado (por ejemplo, porque su puntaje es la suma de dos archivos o desea enumerar las penalizaciones de la bandera del intérprete por separado), asegúrese de que el puntaje real sea el último número en el encabezado:
# Perl, 43 + 2 (-p flag) = 45 bytes
También puede hacer que el nombre del idioma sea un enlace que luego aparecerá en el fragmento de la tabla de clasificación:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Tabla de clasificación
Aquí hay un fragmento de pila para generar una tabla de clasificación regular y una descripción general de los ganadores por idioma.
Actualizar:
Perdón por no aclarar los comandos sit
y stay
muy bien. Son, como dijo @ user6245072, como [
y ]
en BF.
Actualización 2:
Para aclarar las preguntas de @ KennyLau:
- La operación predeterminada es
0
. - La memoria consta de celdas de 8 bits.
- Las células se envuelven en desbordamiento / desbordamiento.
- Se requiere entrada para la operación 4.
fuente
sit lie-down roll-over play-dead heel
1
dice "incremento próxima cell`, pero el código BF correspondiente es 'celda actual decremento' ¿Cuál es el comportamiento correcto.?Respuestas:
Rubí, 287 bytes.
Se ejecuta en una cinta infinita en ambas direcciones. La entrada DOGO es un archivo en la línea de comando. Si no hay un argumento de línea de comando, un programa DOGO seguirá funcionando si se pasa como STDIN, a menos que use la operación
3
(obtenga un byte de STDIN) en cuyo caso no tengo idea. En cualquier caso, la entrada de archivos es la mejor.Asume que no hay otro texto que no sean los cuatro comandos y espacios en blanco en el archivo del programa.
Hola demostración mundial
fuente
Python 3,
388398373371 bytesAsume 256 celdas de memoria. Solo una implementación sencilla, fácilmente superable, probablemente se pueda jugar más. Pruébalo en repl.it .
Gracias a @EasterlyIrk por haberme dado cuenta de que Python 3 es mucho más corto que Python 2.
EDITAR: me di cuenta de que solo tomé en cuenta el flujo excesivo / insuficiente durante la impresión, no en el valor real.
Gracias a @ KevinLau-notKenney por guardar 25 (!) Bytes con trucos de operadores de inversión y multiplicación de listas
EDITAR: -3 bytes poniendo 256 en una variable, -4 jugando con los operadores, +8 asegurándose de que esté en minúsculas
fuente
sys.stdout.write
? ¿Por qué noprint
?print(...,end='')