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 length
bytes. Puede suponer que n siempre será un número entero positivo. Si no se proporciona ninguna entrada, n
debe 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 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
fuente
n * program length
bytes, o es un mínimo?Respuestas:
HQ9 + , 2 bytes
salidas
Creo que no está prohibido aquí.
fuente
QQ
en 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-.1
solo da-.1
, yprint.1/3
da0.0333333333333
solo 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:
k
me 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 salidaNULL
Bono
3316 bytes:Código
Salidas
fuente
Matlab,
75 bytes¡2 bytes menos gracias a @flawr!
Salida:
La salida contiene , por lo tanto, 10 bytes.
newline
ans =
newline
newline
3
newline
fuente
format compact
por defecto :)format loose
es 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
true
después de correr.fuente
Pitón 2, 11
Imprima la representación de cadena del incorporado
id
, que tiene 22 caracteres:El
*1
es llevar el código a 11 caracteres. También podrías hacerprint id;00
.Las alternativas 11 más aburridas son:
fuente
print.8/-9j
es un char cortoprint id,;1
suficiente para suprimir la nueva línea final. Tampoco agrega un espacio final.print 9**21
no funciona. Son 21 personajes.print 9**23
funcionadc, 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
9
s de la longitud requerida.2
empuje 2 a la pila en caso de que la entrada esté vacía?
empujar entrada a la pilaA
empuje 10 a la pila (dc tiene accesos directosA
-F
para 10-15)*
pop dos veces y multiplicar (multiplicar la entrada por 10)A
empuja 10 a la pilar
invertir los dos elementos superiores de la pila^
exponer 10 ^ (10 * entrada)1-
restar 1 de la parte superior de la pilan
Imprimir sin nueva línea.fuente
n
lugar dep
.TI-Basic, 3 bytes
Impresiones
100000
.fuente
0
por 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*b
bytes, con valores dea
abajo 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
a
yb
, vemos quea+b+3
se alcanza el mínimo parafuente
+[[>....]-<<+]
opción.gs2 , -18 bytes
CP437 :
W↕0!↨.2
Volcado hexadecimal:
57 12 30 21 17 2e 32
W
lee los números de STDIN en una lista.↕0
agrega 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
r
y formai
un byte.Nota : Tuve que corregir un error en la
gs2
implementació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
-p
argumento 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*4
o32
, que es el doble del número de bytes del código.Amo a Perl
fuente
pop
yshift
trabajar en@ARGV
(en elsub
que trabajan@_
) para que puedas hacer algo como$n=pop||2
obtener 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 1x20
o 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 -c
Pyth ,
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
Q
hace que Pyth evalúe la entrada antes de que se ejecute el código real.**N9.xvz2
funciona como se esperaba, pero no es más corto que**N9?zvz2
.T
salidas10
y 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.40
no 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<<<2
Aquí 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
for
bucle es más corto que unwhile
bucle y le permite soltar los frenos, es un poco más barato de usarcstdio
y soloprintf
un 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|i
le 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+*v
como 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 primerscript
elemento 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
prompt
yalert
porqueconsole.log
no 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, laArray
función simplemente la envolvería en una matriz de un elemento.+prompt()||2
devuelve 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
textContent
deNode
casos devuelve todo el texto se encuentra dentro de ellos y de sus nodos secundarios, incluyendo guiones.fuente
str.repeat
y 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
33
es en realidad la longitud del código. Crea una nueva matriz con longitud33*a
dondea
el 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!