El reto
Escriba un programa completo que escriba el doble de bytes en la salida estándar que la longitud del programa.
Reglas
El programa debe escribir caracteres ASCII en la salida estándar.
El contenido de la salida no importa.
La salida, medida en bytes, debe ser exactamente el doble de la longitud del programa, también medida en bytes, a menos que cumpla con la bonificación.
Cualquier nueva línea final se incluye en el recuento de bytes de salida.
Prima
Su programa opcionalmente puede tomar un número n, como entrada. Si es así, la salida debe ser exactamente n * program lengthbytes. Puede suponer que n siempre será un número entero positivo. Si no se proporciona ninguna entrada, ndebe tener un valor predeterminado de 2.
Si hace esto, puede restar 25 bytes de su puntaje.
El programa más corto gana.
Restricciones
No hay lagunas estándar.
El programa debe tener al menos 1 byte de longitud.
No agregar espacios en blanco innecesarios al código fuente para cambiar su longitud. Del mismo modo, los comentarios no cuentan.
A menos que cumpla con el bono, el programa no debe aceptar ninguna entrada. Si cumple con la bonificación, el entero debe ser la única entrada.
El puntaje más bajo (duración del programa en bytes - bonificación) gana.
La respuesta más corta para cada idioma gana para ese idioma .
Tablas 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.
Para asegurarse de que su respuesta se muestre, comience con un título, utilizando la siguiente plantilla de Markdown:
# Language Name, N bytes
¿Dónde Nestá 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
fuente

n * program lengthbytes, o es un mínimo?Respuestas:
HQ9 + , 2 bytes
salidas
Creo que no está prohibido aquí.
fuente
QQen un intérprete.Shakespeare, 768
Sí, Shakespeare no es un gran lenguaje de golf. Salidas 1,536 espacios.
Editar: 256
Bien, en realidad lo jugaré golf. Tenga en cuenta que lo anterior no se compila en ninguna implementación de Shakespeare existente porque lo escribí minuciosamente a mano (pero estoy preparado para defender su corrección).
Lo siguiente se traduce a C con una advertencia en spl-1.2.1, y genera 512 espacios:
fuente
Retiro, 17 bytes
16 NOOPs. Luego
!se invoca el depurador y vuelca la memoria en la consola. La memoria está vacía, pero el encabezado tiene 34 bytes de longitud:Pruébalo aquí .
fuente
Mathematica REPL, 1 byte
Impresiones
#1.fuente
CJam, -17 bytes
El código fuente tiene 8 bytes de longitud y califica para la bonificación de -25 bytes .
Pruébelo en línea en el intérprete de CJam .
Cómo funciona
fuente
Python 2.6, 10
Impresiones
-0.10000000000000001, que son 20 caracteres.Tenga en cuenta que la cadena repr muestra más precisión.
print-.1solo da-.1, yprint.1/3da0.0333333333333solo 13 dígitos de precisión.fuente
print`+.1`?Semilla , 10 bytes
Esto compila al programa Befunge (encontrado por fuerza bruta)
que produce los siguientes 20 bytes cuando se ejecuta (probado en CCBI, tenga en cuenta el espacio final):
Al no estar familiarizado con Befunge 98, tuve que verificar la especificación varias veces para esta:
kme parece bastante roto, ejecutándose una vez más de lo previsto debido a que la IP se movió a la instrucción repetida.salidas como un número, seguido de un espaciofuente
R,
32 bytesCódigo
Salidas
Wow, finalmente R, finalmente.
Parece que
{}también funciona, da salidaNULLBono
3316 bytes:Código
Salidas
fuente
Matlab,
75 bytes¡2 bytes menos gracias a @flawr!
Salida:
La salida contiene , por lo tanto, 10 bytes.
newlineans =newlinenewline3newlinefuente
format compactpor defecto :)format loosees la preferencia predeterminada123;4? Es tres bytes más corto =)JavaScript, 2 bytes!
Incluso más corto que la solución de 3 bytes:
Devuelve
truedespués de correr.fuente
Pitón 2, 11
Imprima la representación de cadena del incorporado
id, que tiene 22 caracteres:El
*1es llevar el código a 11 caracteres. También podrías hacerprint id;00.Las alternativas 11 más aburridas son:
fuente
print.8/-9jes un char cortoprint id,;1suficiente para suprimir la nueva línea final. Tampoco agrega un espacio final.print 9**21no funciona. Son 21 personajes.print 9**23funcionadc, 10-25 = -15
Toma una línea en blanco para "sin entrada".
Calcula 10 ^ (10 * n) - 1, donde n es la entrada, o 2 si la entrada está vacía. Imprime una cadena de
9s de la longitud requerida.2empuje 2 a la pila en caso de que la entrada esté vacía?empujar entrada a la pilaAempuje 10 a la pila (dc tiene accesos directosA-Fpara 10-15)*pop dos veces y multiplicar (multiplicar la entrada por 10)Aempuja 10 a la pilarinvertir los dos elementos superiores de la pila^exponer 10 ^ (10 * entrada)1-restar 1 de la parte superior de la pilanImprimir sin nueva línea.fuente
nlugar dep.TI-Basic, 3 bytes
Impresiones
100000.fuente
0por 1 byte.ᴇ3? Y @lirtosiast, dado que TI-Basic no tiene nuevas líneas, soy escéptico al respecto.Brainfuck, 14 bytes
Este es un pequeño ejercicio matemático. Denotemos el número de
+caracteres en el código pora, y el número de.caracteres porb.El código genera
a*bbytes, con valores deaabajo a1(estos son bytes no ASCII, pero parece estar bien según la especificación). La longitud del código esa+b+3. Entonces tenemosAl probar diferentes valores para
ayb, vemos quea+b+3se alcanza el mínimo parafuente
+[[>....]-<<+]opción.gs2 , -18 bytes
CP437 :
W↕0!↨.2Volcado hexadecimal:
57 12 30 21 17 2e 32Wlee los números de STDIN en una lista.↕0agrega un 2 a la lista y!extrae el primer elemento. Entonces↨.(la lista[0,1,2,3,4,5,6]) se repite (2) esto muchas veces.Esto es muy similar a la respuesta de Dennis en CJam: gs2 simplemente se combina
ry formaiun byte.Nota : Tuve que corregir un error en la
gs2implementación para que esto funcionara: anteriormente, cada programa tenía una nueva línea oculta añadida a su salida, que era completamente involuntaria. Solo surgió después de que intenté resolver este programa (el lenguaje fue diseñado para el golf de anarquía, que ignora las nuevas líneas finales en todos los problemas), y solo presioné una solución para dominar en este momento, así que siéntete libre de tomar esta respuesta con un grano de sal.fuente
Perl 5, 16 bytes - 25 = -9
Este es un enfoque extraño para el problema.
Ejecutar con el
-pargumento de la línea de comando.Vi una respuesta de Perl a continuación que usaba una variable especial para imprimir más texto, y así acortar su recuento de bytes. Entonces utilicé una variable especial mucho más detallada. Imprime 8 caracteres con un nombre de variable de 2 caracteres. Por lo tanto, con un recuento de bytes de 16 (rellenado con un carácter de espacio en blanco para que sea 16), imprime
2 * $], donde se imprime$]la versión de Perl5.xxxxxx, según su versión de Perl. Sin entrada, lo imprime cuatro veces, igualando8*4o32, que es el doble del número de bytes del código.Amo a Perl
fuente
popyshifttrabajar en@ARGV(en elsubque trabajan@_) para que puedas hacer algo como$n=pop||2obtener el primer bloque de código, y tienes;}al final , que casi siempre puede ser solo}para salvar a otro. Algo que podría ayudarlo a ahorrar más caracteres es el operador de repetición de cadenax, considereprint 1x20o algo por el estilo ... :) ¡Espero que ayude!print"n"x(21*pop||42). Ejecutar en la línea de comando conperl -e'print"n"x(21*pop||42)' 3 | wc -cPyth ,
109-25 = -16-1 por Dennis
Imprime [entrada] * 9 caracteres de comillas, o 2 * 9 si la entrada está vacía.
isaacg tiene una respuesta más corta aquí
Pyth , 1 byte
Impresiones
10. Es una variable integrada que se inicializa a 10.fuente
Qhace que Pyth evalúe la entrada antes de que se ejecute el código real.**N9.xvz2funciona como se esperaba, pero no es más corto que**N9?zvz2.Tsalidas10y una nueva línea. Usod, es un espacio al que se agrega una nueva líneaMacarrones 0.0.2 , 23 caracteres
Imprime 32 9 en binario, que resulta convenientemente tener 46 caracteres de largo (es
1000000000000000000000000000000000000000000000), sin una nueva línea final.fuente
JavaScript, 4 bytes
Creo que esta es la solución JS más corta posible sin ES6: P
fuente
v0.10.40no imprime nada porque no hay un comando de impresión. ¿Tiene una versión diferente de Node.js o solo funciona en un shell que imprime la evaluación de una línea? (en cuyo caso no creo que esta respuesta sea válida).C,
2725• Gracias @Titus por eliminar 2 bytes
Y para mi solución de 16 bytes no competitiva en C, vaya aquí: https://codegolf.stackexchange.com/a/111330/16513
^ Digo que no compite porque el código de error podría depender de su compilador. También tenga en cuenta que estoy usando GCC en esa solución. Además, no estoy seguro de si rompe la regla 1 o no, creo que probablemente lo hace, así que seguí adelante y lo etiqueté como no competidor
fuente
main(){printf("%0.XXf",0);}funciona.#include. El compilador emitirá una advertencia y, a veces, se bloqueará, pero generalmente funcionará .V , 2 bytes
Esto salidas
Pruébalo en línea!
Explicación
Esta es una respuesta realmente hacky, y funciona al abusar de las partes internas de V. Esencialmente, cómo funciona es que
ÿes un comando en V que indica que el programa ha terminado, y todos los comandos pendientes deben completarse. De lo contrario, algunas terminaciones implícitas no funcionarían, y la interpretación se colgaría con más frecuencia. Este comando se envía automáticamente varias veces al final del programa, y la mayoría de las veces no tiene ningún efecto en la salida.ées un comando que inserta un solo carácter. Sin embargo, lo hace agarrando un byte sin procesar, por lo que no interpretaÿcomo "final", lo interpreta como "este es el carácter que debe insertar".4éhace que inserte este personaje 4 veces en lugar de uno.fuente
bash, 11 bytes
Aquí hay un uso agradablemente irónico de una herramienta de compresión de datos :) ...
gzip -f<<<2Aquí hay un volcado hexadecimal de la salida (22 bytes) ...
fuente
dc, 19-25 = -6
Toma un número (se empuja 2 a la pila como respaldo) y lo multiplica por 19. Imprime un
1(sin nueva línea) y disminuye el número. Se repite mientras el número es mayor que 0.fuente
C ++, 80 bytes
tenga en cuenta que el carácter de nueva línea es de dos caracteres. (si no desea que sea así, cambie i <20 a i <= 19 para volver al mismo número de bytes).
Salida de muestra (cambiará cada vez)
misma dirección de memoria de 8 caracteres 20 veces.
fuente
forbucle es más corto que unwhilebucle y le permite soltar los frenos, es un poco más barato de usarcstdioy soloprintfun cordel, y no necesita devolver nada.#include<iostream> int main(){for(int i=10;--i;)std::cout<<&i;}Pero ya hay una respuesta más corta con un enfoque ligeramente diferente.CJam, -9
Explicación
q_,Lee toda la entrada y la empuja, luego empuja la longitud.
{i}{;2}?Si la longitud de la entrada es superior a cero, conviértala en un entero. De lo contrario, saque la entrada y presione 2.
G*Empuja 16 (la longitud del programa), luego lo multiplica por 2 si no hay entrada, o por la entrada.
'X*Empuja X y lo multiplica por la parte superior de la pila.
fuente
q2e|ile dará el número que desear_{i}2?SB**.> <> , 19 + 2 (indicador -v) - 25 = -4 bytes
pruébalo aquí!
Gracias Cole y Sp3000
Primero verifica la longitud de la pila, si es 0 pon 2 en la pila. Lo multiplica por 21 (longitud del código), luego genera la representación unicode de ese número y lo disminuye por 1, realiza un bucle hasta 0. (tendrá que inspeccionar la salida para ver los caracteres, ya que el navegador no los mostrará)
fuente
l0=?2f6+*vcomo la primera línea y1-::0=?;o>como la segunda deberían hacerlo bien.?!es generalmente mejor que0=?JavaScript (ES5), 68 bytes - 25 bonus = 43
(en caso de que su navegador no permita que el fragmento se ejecute por razones de seguridad, pruebe este violín http://jsfiddle.net/thePivottt/c3v20c9g/ )
Este script solo funciona en un navegador que sigue al menos DOM3 (con
Node.textContent) y ECMAScript 5 (o tal vez una versión anterior). Traté de hacer que sea lo más estándar y compatible posible. También supone que el script está en el primerscriptelemento del documento.Realmente concatena múltiples copias del script en sí, lo cual es bastante impresionante . Tenga en cuenta que la herramienta de fragmentos en SE coloca espacios en blanco adicionales alrededor del script. Podríamos ignorar ese espacio en blanco,
.trim()pero no lo considero necesario teniendo en cuenta que el programa es perfecto sin la intromisión de SE. Simplemente guarde este archivo HTML5 si desea ver que se ejecute perfectamente.Este script usa
promptyalertporqueconsole.logno es parte de ningún estándar, incluso si la mayoría de los navegadores modernos lo usan. Si el número de repeticiones pasadas no es un número válido o está vacío, el valor predeterminado es 2. Si la entrada es un número decimal, el programa se bloquea debido a la longitud inválida de la matriz.El código usa algunas características interesantes de JavaScript:
Array(1+(+prompt()||2))Array(INT)crea una matriz de celdas INT.+prompt()toma una entrada y la convierte en un número. Si pasamos la entrada como una cadena, laArrayfunción simplemente la envolvería en una matriz de un elemento.+prompt()||2devuelve la entrada si es verdadera , de lo contrario devuelve 2.Todo este código crea una matriz de N elementos vacíos, donde N es uno más que la cantidad de repeticiones pedidas.
.join(document.scripts[0].textContent)El
join(STRING)método de la matriz crea una cadena concatenando todas las celdas, colocando la cadena proporcionada entre los valores. En este programa, hay N + 1 elementos vacíos en la matriz, o exactamente N puntos intermedios. El resultado será una cadena que contiene N veces la cadena proporcionada.document.scripts[o]Es el primer<script>elemento del documento.El
textContentdeNodecasos devuelve todo el texto se encuentra dentro de ellos y de sus nodos secundarios, incluyendo guiones.fuente
str.repeaty aún genera el código en sí mismo, el puntaje se reduce a 26, pero es un poco aburrido: PJavaScript ES6, 33-25 = 8
Pruébalo en línea!
fuente
33es en realidad la longitud del código. Crea una nueva matriz con longitud33*adondeael parámetro de entrada está predeterminado en 2 según el OP, lo llena y devuelve una cadena unida.Arrary(1+a*<length>)yjoin`0`Julia, 42 bytes - 25 = 17
Esto lee una línea de STDIN usando
readline(). Si está vacío, es decir, no se ha proporcionado ninguna entrada, entonces n se define como la entrada convertida a un entero. De lo contrario n es 2. A continuación, imprimir 42 n@s a STDOUT.fuente
Perl, 18-25 = -7
La variable especial
$=, también conocida como$FORMAT_LINES_PER_PAGE, comienza su vida útil y60, por lo tanto, solo necesita duplicarse la mitad de veces que la salida de bytes necesaria.fuente
print$=x9x(pop||2)¡bien!