Tu tarea es simple. Publique un fragmento en cualquier idioma que si el fragmento se repite n veces, generará n en decimal, octal y hexadecimal, en ese orden, separados en espacios. n es un número entero mayor que cero. No hay ceros a la izquierda. La respuesta más corta gana
Ejemplo
Si el fragmento es ABC
entonces el caso de prueba es
ABC
1 1 1
ABCABC
2 2 2
ABCABCABCABCABCABCABCABCABC
9 11 9
ABCABCABCABCABCABCABCABCABCABCABCABC
12 14 C
ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC
18 22 12
1 01 0x1
? (Incluye prefijos)Respuestas:
Japt, 12 bytes
¡Gracias a @ETHproductions por guardar 2 bytes!
Igual que mi 𝔼𝕊𝕄𝕚𝕟 respuesta.
fuente
[°TTs8 TsG]¸
Perl, 30 bytes
Regrese al principio de la línea, incremente el contador y el contador de impresión sobrescribiendo la salida anterior.
fuente
JavaScript,
54 53 5147 bytesGuardado 4 bytes gracias a @ user81655
De hecho, estoy un poco sorprendido de que esto funcione.
Explicación
Pruébalo en línea
fuente
ReferenceError: Can't find variable: d
incluso en modo suelto D:d=d?d+1:1
?C ++,
205179 bytes(Sin nueva línea final: cuando se copia, la primera línea de la copia y la última línea del original deben coincidir)
Básicamente, esto funciona haciendo una secuencia de variables estáticas que, en la construcción, incrementan un contador de variable global. Luego, en la destrucción, si el contador no es 0, realiza toda su salida y lo pone a cero.
Para definir una secuencia de variables sin conflictos de nombres, usamos la macro explicada de la siguiente manera:
lo que depende de las peculiaridades del procesador de cadenas. Usamos
z
muchas veces para definir clases / variables que no entrarán en conflicto entre sí cuando se copien en líneas separadas. Además, las definiciones que deben aparecer solo una vez se colocan en la primera línea, que se comenta en copias del código. Las declaraciones#define
y#include
no les importa que se repitan, por lo que no es necesario un manejo especial.Este código también presenta un comportamiento indefinido en la declaración:
ya que no hay puntos de secuencia, pero se modifica y se accede a c. LLVM 6.0 da una advertencia, pero la compila según lo deseado, que
--c
evalúa antesc
. Se podría, a expensas de dos bytes, agregue la instrucción--c;
antes de las salidas y el cambio--c
enprintf
ac
, lo que deshacerse de la advertencia.Reemplazado
std::cout
porprintf
guardar 26 bytes gracias a una sugerencia de mi hermano.fuente
CJam,
201918 bytes¡Gracias a @ MartinBüttner por jugar golf en 1 byte!
Pruébalo en línea!
Cómo funciona
fuente
𝔼𝕊𝕄𝕚𝕟, 14 caracteres / 28 bytes
Try it here (Firefox only).
Primera respuesta! Aunque probablemente hay mejores formas de manejar esto.
Explicación
fuente
MATL , 26 bytes
Utiliza la versión actual (6.0.0) . Funciona en Octave.
Ejemplos
Una vez:
Dos veces:
16 veces:
Explicación
El número de elementos en la pila se usa para indicar cuántas veces hemos ejecutado el fragmento
fuente
OCaml, 198 bytes
Incluye una nueva línea final y requiere que el nombre del archivo comience con una tilde (lo usé
~.ml
; puede ejecutarloocaml \~.ml
) porque es el carácter ASCII imprimible estándar de mayor valor. Abusa del hecho de que todos los caracteres de una cadena son mutables ySys.argv.(0).[0]
es el primer carácter del nombre de archivo.Solo debería funcionar para n = 1 a 126, porque el código ASCII para
~
es 126 y estoy agregando uno a la salida. Podría hacerse dos bytes más cortos si solo queremos n = 1 a 125. Después de que se repita 126 veces, volverá a n = 1.Este es mi primer golf, por lo que cualquier comentario o mejora sería muy apreciado.
Versión sin golf:
fuente
Sys.argv.(0).[0]
. Sin embargo, no sé mucho sobre OCaml.TeaScript ,
2120 bytesDebería hacer que se cierre automáticamente en
;
Pruébalo en línea
Explicación
┼
se convierte++
fuente
Perl, 40 bytes
Hay una nueva línea final detrás del colon.
Trata todo después de la primera línea como un documento aquí y cuenta el contenido
z
. Por cada copia adicional del códigoz
se agrega uno . Tenemos que agregar1
al conteo, porque no hay ninguno para el primer fragmento (el que se ejecuta).Si se permite una salida adicional a stderr, podemos omitir las 2 comillas simples
''
y podemos bajar a 38 bytes. Sin el''
perl emite una advertencia sobre una característica en desuso.fuente
Mathematica, 76 bytes
Tenga en cuenta que no
n
debe tener definiciones antes.Aquí,
;
se utiliza el comportamiento de . El fragmento de arriba es uno soloCompoundExpression
, sin embargo, cuando se juntan un par de fragmentos, todavía hay unoCompoundExpression
como se muestra a continuación. (Se hacen algunos reordenamientos innecesarios).Por lo tanto, no se puede hacer que tal fragmento funcione si se escribe explícitamente
CompoundExpression
. Además, casi todo lo que te gusta se puede poner antes del primero;
, comoE
,Pi
oMandelbrotSetPlot[]
,.fuente
bash, 49 bytes
Archivo
count.bash
:... sin línea nueva.
Correr:
fuente
Python 2, 54 bytes
Sin nueva línea final. Salidas en el formulario
1 01 0x1
.Si eso no está bien, 56 bytes
Cuando se pega uno frente al otro, la longitud del archivo se alarga 1 línea por cada vez que se pega. El caso base comienza con 2 líneas, por lo que debe restar 1 de la longitud de la línea. La computación es suprimida por el comentario.
fuente
"%d %o %x"%(n,n,n)
Eso es genial. No tenía idea de que pudieras hacer eso. Si resulta que dejar prefijos no está bien, tendré que pedirlo prestado.Python 2.x 140 bytes
Esto no estaba destinado a ser una solución demasiado competitiva, sino un método que encontré divertido, por ser, un intento de un código de golf multiproceso .
Mantiene un contador, genera un hilo para cada recuento y si el contador no ha cambiado cuando el temporizador de contadores se apaga después de completar un costoso problema matemático (en lugar de un temporizador para guardar bytes), se imprime la cadena formateada.
Algunas configuraciones de ejemplo y sus salidas:
y quince copias de pastas:
fuente
thread.start_new_thread
¿Podría Python haber pensado en un nombre de método peor para el golf de código?Perl 5 , 31 bytes
Utiliza el mismo enfoque que mi respuesta para '¡Doblo la fuente, tú doblas la salida!' .
Pruébalo en línea!
fuente
Ruby, 35 bytes
Cada fragmento se incrementa
$.
(que comienza como 0 si no se han leído archivos), pero solo el último genera algo.*-~-0
se evalúa como*1
, lo que significa imprimir la cadena una vez, pero con la concatenación se convierte en*-~-01
una expresión octal que se evalúa en 0. Dado$><<
que no incluye una nueva línea final, imprimir la cadena vacía no significa imprimir nada.fuente