Escriba un programa que, para los números del 1 al 255, imprima el código BF que producirá el número dado en algún byte de la matriz, más una nueva línea.
Por ejemplo, las primeras cuatro líneas de la salida podrían (y muy probablemente serán):
+
++
+++
++++
El ganador será el más pequeño: source code + output
(en bytes).
Aclaraciones y revisiones :
Los programas BF usan celdas de ajuste.
El programa BF de salida debe terminar con la única celda distinta de cero que es la celda que contiene el número.
Los programas deben salir en orden ascendente.
La salida de un programa para 0 es opcional.
Los punteros de datos negativos no están permitidos.
<
en el primer puntero no hará nada. (deje un comentario si sería más apropiado que lo arroje)
+>++++++++++.
Sería un programa válido para la entrada1
?Respuestas:
Perl 6 , 224 + 3964 =
58344188 bytesPruébalo en línea! (puede agotar el tiempo de espera. Cambie
^27-13
a^25-12
para acelerar un poco a costa de una salida adicional)Emite el código más corto en el formulario
*>[*>*<]>*
, donde cada uno*
es un cierto número de+
so-
s. Hay algunos ajustes adicionales, como eliminar el bucle si no es necesario, así como los>
s finales .Por lo que puedo decir, la salida es la más desarrollada para este formato en particular.
Explicación:
fuente
Malbolge , 28743 bytes + 7166 de salida
No es muy creativo, ¿no? Voy a trabajar en el golf de este chico malo.
Pruébalo en línea!
fuente
Brainfuck,
777573 + 32894 = 329673296932971bytesPruébalo en línea!
la salida es la más simple posible
explicación:
fuente
Stax , puntaje
47514783 (812 bytes + 3971)Ejecutar y depurarlo
Comencé con los programas publicados óptimos .
Usé un poco de regex-fu, para limitarlo a los programas más cortos que usan como máximo 2 celdas. Luego recorté cualquier rastro
<
o>
caracteres. Creo que esta es una forma posiblemente conservadora de garantizar que no haya celdas ajenas a cero al finalizar el programa. Luego lo ejecuté a través de un programa experimental stax que escribí para generar programas stax para salida fija de tipo kolmogorov.Este programa funciona aplicando repetidamente reemplazos de cadenas. En cada paso, busca una subcadena de> 1 longitud que ocurre con mayor frecuencia y la reemplaza con un carácter no utilizado.
fuente
Carbón ,
707698410 + 3627 =433443254037 bytesPruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Apague el relleno de espacio.
Asigne una cadena comprimida grande que consista en las respuestas de @ JonathanAllen para
-128
...-15
pero con+
y-
signos transpuestos.Dibuje un triángulo de
+
s del lado 14, que genera los resultados correctos para 1 a 14. El cursor se deja en la esquina inferior, aunque el retorno final de la cadena comprimida moverá la siguiente salida a la siguiente línea.Divida la cadena grande en los caracteres de retorno e imprima cada subcadena en orden inverso, generando así los resultados de 15 a 128.
Mueva una línea hacia arriba para que el resultado de 128 se sobrescriba con el resultado negado de 128.
Recorra la cadena de transposición
+
y-
regrese de nuevo para que generen los resultados correctos de 128 a 241.Dibuja un triángulo de
-
s del lado 14, que genera los resultados correctos para 242 a 255.fuente
Jalea , 1224 + 3716 = 4940 bytes
Un programa completo
Pruébalo en línea!
¿Cómo?
Casi por completo la compresión de los mejores resultados actuales en esolangs que dejan solo un único no cero, con movimientos de cinta final eliminados. Probablemente haya una manera de evaluar un subconjunto de programas BF de modo que terminen y produzcan las soluciones más cortas que superarían a este ingenuo programa. También puede haber una manera de superar esto mediante un programa más inteligente basado en patrones o de factorización.
fuente
SuperMarioLang , 231 + 32894 bytes
Pruébalo en línea!
Esto seguramente se puede jugar más, ya que la salida es la más básica para el brainfuck, pero me llevó todo el día escribir esta respuesta (mis tres hijos me dejan poco tiempo libre) y estoy orgulloso de que al menos logré lograrlo esta.
fuente
Pitón 2, 70 + 8428 = 8498
-2 Bytes Gracias a A__!
-20 Bytes ¡Gracias a Jonathan Allan!
-229 bytes colocando el número en la segunda celda
-1000ish bytes cambiando de 16 a 9
Pruébalo en línea!
Salida
fuente
Rubí 271 + 5363 = 5634
Pruébalo en línea!
Convierte cada valor en la base más pequeña que no contiene
un cerosu dígito inicial en cualquier otro lugar, y luego convierte desde esa base. Los valores superiores a 127 se calculan como sus inversos.Sin envoltura, 221 + 5888 = 6109
Usando el mismo enfoque que el anterior, con celdas sin envoltura.
Pruébalo en línea!
fuente
JavaScript (Node.js) , 691 + 3627 = 4318
Usando el mismo enfoque que @ Neil's Charcoal answer , y por lo tanto también basado en @ JonathanAllan's Jelly answer .
Pruébalo en línea!
fuente
Barril no oficial 16 + 32895 = 32911 bytes
Una solución básica para un lenguaje de golf. Esto es lo más simple que se me ocurre.
Pruébalo en línea!
fuente
Ruby 23 + 32895 = 32918 bytes
Como línea de base. Esta es la solución más simple que se me ocurre.
fuente
0
probablemente debería ser1
(aunque pregunté si también podríamos salir por cero)256.times{|n|puts ?+*n}
no es que importe demasiado ...Retina 0.8.2 , 28 + 16640 = 16668 bytes
Pruébalo en línea! Incluye salida para
0
. Solo salidas con+
s hasta 127 y-
s hasta 255.fuente
Scala , 95 + 16639 = 16734 bytes
Pruébalo en línea!
Una respuesta simple que obviamente no va a ganar. Utiliza solo el hecho de que el
-
operador (disminuyendo un byte) vuelve a 255.fuente
05AB1E , puntuación: 4848 ( código fuente de 1219 bytes + salida de 3629 bytes)
La salida es un puerto de la respuesta de carbón de @Neil , ¡así que asegúrate de votarlo también!
Pruébalo en línea.
Explicación:
Ver este consejo 05AB1E mío (sección Cómo comprimir grandes números enteros ) para entender por qué
•тôm...ò´Θ•
es183...875
.fuente