Su desafío es convertir el texto de entrada en código de rechazo mental que generará el texto.
Tutorial tomado de aquí con permiso aquí
Brain-Flak tiene dos pilas, conocidas como 'izquierda' y 'derecha'. La pila activa comienza a la izquierda. Si aparece una pila vacía, devolverá 0. Eso es todo. No hay otras variables. Cuando se inicia el programa, cada argumento de línea de comando se transfiere a la pila activa.
Los únicos caracteres válidos en un programa Brain-Flak son ()[]{}<>
, y siempre deben estar equilibrados. Hay dos tipos de funciones: Nilads y Mónadas . Un nilad es una función que toma 0 argumentos. Aquí están todas las nilas:
()
Evalúa a uno.[]
Evalúa a la altura de la pila actual.{}
Pop la pila activa. Evalúa el valor reventado.<>
Alternar la pila activa. Evalúa a cero.
Estos se concatenan juntos cuando se evalúan. Entonces, si tuviéramos un '3' en la parte superior de la pila activa, este fragmento:
()(){}
evaluaría a 1 + 1 + active.pop()
cuál evaluaría a 5.
Las mónadas toman un argumento, un trozo de código Brain-Flak. Aquí están todas las mónadas:
(n)
Empuje 'n' en la pila activa.[n]
Evalúa a negativo 'n'{foo}
Mientras que cero no está en la parte superior de la pila, haz foo.<foo>
Ejecute foo, pero evalúelo como 0.
Estas funciones también devolverán el valor dentro de ellas, por lo que
(()()())
Empujará 3 pero
((()()()))
Empujará 3 dos veces .
El {}
evaluará a la suma de todas las corridas. Entonces, si tuviéramos '3' y '4' en la parte superior de la pila:
{{}}
evaluaría como 7.
Cuando el programa termina de ejecutarse, se imprime cada valor que queda en la pila activa, con una nueva línea entre ellos. Los valores en la otra pila se ignoran.
Reglas
- Puede suponer que el Brain-Flak se está ejecutando sin ascii. (
-A
) - El código brain-flak NO debe requerir entrada
- Se aplican todas las reglas estándar.
- El código debe ejecutarse en 1 minuto para cualquier entrada de hasta 1024 bytes en TIO. (Si no hay salida TIO disponible, proporcione un intérprete y lo ejecutaré en mi máquina (mi máquina debería poder acercarse a TIO)).
- Debe admitir entradas de longitud arbitrarias.
- Puede tomar la entrada de un archivo.
- La optimización para casos de prueba no está permitida
- Se requiere salida determinista
- Los programas no necesitan estar limpios
Casos de prueba (pruebe su código en estos, los textos de puntuación reales se publicarán en 1-2 semanas después de que se publique el desafío)
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
The meaning of brain-flak is to flak your brain with pain.
`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?
To be, or not to be, that is the question:
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune,
Or to take arms against a sea of troubles
And by opposing end them. To die-to sleep,
No more; and by a sleep to say we die
<your brain-flak code here>
The fitness pacer test is a multi stage test. Avacado Avacado Avacadad Avacadad carrot.bat carrot.jar carrot.carrot Quack Quack Quack Quack Quack Quack Quack Quack Quack downgoat doawngoat down down gaot
This challenge came from a online program that turned text into brain-fuck. However brain-fuck has limitations and it is not nearly as cool as brain-flak. I really am looking forward to cool programs :) I am glad you took the time to read this and look forward to seeing your answer.
Victorioso
Para ganar, debe proporcionar la longitud total del código de bloqueo cerebral proporcionado por cada uno de los casos de prueba que se publicarán 1-2 semanas después de la fecha de publicación. La longitud total más corta gana.
¡¡¡¡¡¡NOTA!!!!!!:
Esto no es código golf , la longitud de su código no afectará su puntaje final de ninguna manera. Se agradece hacer un código legible limpio. ¡Gracias!
Casos de prueba
fuente
<your brain-flak code here>
debajo de 1000 recibe la recompensa. Que no puedo publicar para otro día, whoops; no me di cuenta de lo nuevo que era esto.Respuestas:
Brain-Flak , 130 bytes
Pruébalo en línea!
Salida para
<your brain-flak code here>
: 5045 bytesPruébalo en línea!
fuente
Python 3 , 17744 bytes
Editar: he agregado un par de opciones para ayudar al golf en situaciones seguras.
Pruébalo en línea!
Una solución recursiva
simpleque continuaré mejorando aún más. Esto hace muy bien con entradas más pequeñas, pero pierde la respuesta Ruby de MegaTom para entradas más largas.Notas:
[]
volverán inútiles (aunque pueden desactivarse comentando un par de líneas, y solo lo mejoran alaproximadamente 100 bytes)bastante).Dado que este es un algoritmo recursivo, tomará más tiempo para los caracteres con valores grandes. Por ejemplo, el carácter ÿ (valor 255) tarda 9 segundos en evaluarse, donde cada caso de prueba a la vez tarda 1,6 segundos.Caché implementado![]
)-
. Esto recortó algunos bytes, y mucho tiempo dado el valor de ese guión em fue 8212: o.Salidas de ejemplo:
<your brain-flak code here>
(312 bytes):Pruébalo en línea!
Hello, World!
( 142 bytes [Nota: el mejor anterioractualera 148 bytes , y ahora es de 136 bytes]):Pruébalo en línea!
fuente
Ruby , 17398 bytes para todos los casos de prueba (nuevos)
Pruébalo en línea!
<your brain-flak code here>
,362358 bytesPruébalo en línea!
fuente
Must run under 1 minute for inputs up to 1024 bytes
regla (aunque ahora es mucho más rápido)cache
, nocash
; pPython 3 , 16222 bytes
Pruébalo en línea!
Primero debajo de 1000 para
<your brain-flak code here>
: DBrain-Flak , 448 bytes
Pruébalo en línea!
(originalmente 827 para
<your brain-flak code here>
)fuente
05AB1E , demasiados bytes (mi primer BF cualquier cosa)
Pruébalo en línea!
Intento extremadamente básico de golf usando el código de "multiplicación" prefabricado Brain-flak. Todo lo que hace es encontrar el par divisor de suma más pequeña para cada punto de código ASCII, luego empuja ambos pares de divisores como números. El código Brainflak
({}<>)({<({}[()])><>({})<>}{}<><{}>)
se agrega y ejecuta en un bucle hasta que todos los valores estén en la pila alternativa.Lista de personas a las que agradezco:
(()())(()()())
=((()())())
(-252 bytes
)-927 bytes
).Ejemplo de golf
<your brain-flak code here>
en347032182291 bytes:Brain-Flak , 2291 bytes
Pruébalo en línea!
Cada fila representa un personaje que se está jugando al golf, esto supera la solución básica que publiqué en un 60% , y al no saber literalmente nada sobre Brainflak, creo que esta es una buena base de lo que no se debe hacer. Calificaré la respuesta dentro de poco, en medio de otra cosa y estoy seguro de que puedo mejorar en esto. (Incluyo las nuevas líneas en el conteo de bytes porque no espero que esto gane).
fuente
(()()()())(()()()()())
y((()()()())())
2) La multiplicación por una constante puede ser mucho más corta quepush(); multiply();
. Por ejemplo, para duplicar un número, puede hacer en(({}){})
lugar de(()())({}<>)({<({}[()])><>({})<>}{}<><{}>)
. Pero esta no es una línea de base terrible. Si quieres más información, siempre estoy feliz de chatear en la tercera pilaBrain-Flak
Pruébalo en línea!
Salida para
<your brain-flak code here>
, 582 bytes:fuente