Todos conocemos, o al menos hemos oído hablar, de brainfuck , uno de los lenguajes esotéricos más famosos e influyentes. Si bien en la actualidad la mayoría de las implementaciones usan una cinta infinita, el compilador original de Urban Müller tenía una cinta de 30000 celdas. Un hecho poco conocido * es que en realidad hay un valor especial al final de la cinta, algo con lo que casi nunca interactúa en un programa típico de brainfuck.
Si bien podría imprimir este valor con 29999 >
sy a .
, brainfuck es conocido por sus soluciones cortas y concisas, por lo que su objetivo es imprimir este valor con el número mínimo de caracteres.
*ficción
Reglas:
- Un repaso a las instrucciones de brainfuck:
+
/-
: Incrementa / disminuye la celda actual, ajustando de 255 a 0 cuando se incrementa 255 y viceversa<
/>
: Mueve el puntero hacia la izquierda / derecha en la cinta.
: Imprime el valor de la celda actual.[
: Salta al correspondiente]
si el valor en la celda es 0]
: Salta al correspondiente[
si el valor en la celda no es 0
- En este caso
,
(Obtener entrada) no hace nada, ya que el compilador original deja la celda sin cambios en EOF, y este programa no debería recibir ninguna entrada. - La cinta se llena inicialmente con todos los 0, excepto la celda 30000, que contiene un valor desconocido.
- El puntero comienza en la celda 1 y debe terminar en la celda 30000, después de haberlo impreso.
- Las celdas a la izquierda de 1 y a la derecha de 30000 tienen un comportamiento indefinido, por lo que las soluciones no deben visitar estas celdas.
- Tenga en cuenta que el valor en 30000
espuede ser un 0, por lo que simplemente repetirse hasta llegar a un no-cero celular no funcionará. - Debe imprimir solo el valor en la celda 30000
- ¡La solución más corta gana!
- Tie-breaker es el programa más eficiente (se ejecuta en los pasos más pequeños), seguido por el tiempo de envío más rápido.
Consejo: Esolanging Fruit sugiere usar https://copy.sh/brainfuck para probar su código. Las especificaciones son como se describen en este desafío, y puede seleccionar la abort
opción para que su programa se detenga si se sale de los límites.
.
. Yo gano.