En este desafío, creará un programa que crece a medida que avanza a través de las edades ... Hasta 2017.
Desafío
Siempre que esta descripción del desafío diga "programa", también puede leer "función".
Su envío, cuando se ejecute, generará un programa que tiene una longitud de THE LENGTH OF YOUR SUBMISSION
+ 1
bytes.
Cuando se ejecuta ese programa, generará un programa que tiene una longitud de THE LENGTH OF YOUR SUBMISSION
+ 2
bytes ... y así sucesivamente.
Sin embargo , cuando su programa ha alcanzado una longitud de 2017 bytes, en su lugar debe salir 2017
y salir.
Reglas
- La salida del programa final tiene que ser
2017
y solo2017
. Puede ser una cadena o un entero, pero debe leer2017
y no2017.0
o0x7E1
o cosa por el estilo. - No hay lagunas estándar .
- Solo su programa inicial puede requerir entrada, que se agregará a su bytecount.
Entonces, si su programa inicial tiene 324 caracteres de largo y toma una entrada de 13 bytes, su puntaje total será 324 + 13 = 337 y el programa que salga debe tener 338 bytes de largo.perl -X
Sin embargo, el uso de indicadores de línea de comando (p . Ej. ) Está bien, siempre que su programa inicial y todos los programas generados utilicen los mismos indicadores. Además, también cuentan para el recuento total de bytes. Los guiones, barras, etc. delante de un indicador de línea de comando no cuentan para el total, por lo que, por ejemplo,perl -X
cuentan como un byte adicional.
- Si devuelve una función, debería ser una función real y no una cadena que, cuando se evalúa, produce una función.
- No se permiten quines inadecuados (si su programa es un quine).
Ejemplo
Pseudocódigo, 99 bytes
IF (PROGRAM LENGTH == 2017) PRINT 2017 ELSE PRINT (THE SOURCE OF THIS PROGRAM + 1 BYTE PADDING)
Su envío puede funcionar de manera diferente, siempre que cumpla con las reglas anteriores.
;;;
permitido?Respuestas:
*> <> ,
292830 bytesPruébalo aquí! (* prueba con 2017 bytes )
* establece el retraso en 0 ms o quizás tengas que esperar mucho tiempo
Esto agrega un adicional
cada ejecución subsiguiente. Si tiene 2017 bytes y se ejecuta, generará 2017 y detendrá la ejecución sin ningún otro resultado.
Actualización: se guardó 1 byte al verificar si la longitud es menor que 2017 en lugar de igual
Actualización 2: salida fija para +2 bytes
Explicación
fuente
when your program has reached a length of 2017 bytes
, no 2016Python 2.7, 90 bytes
Aquí hay uno relativamente simple:
¡Prueba la primera iteración aquí! ¡Prueba la penúltima iteración aquí! ¡Prueba la iteración final aquí!
Sin golf:
fuente
p='';...
y1929else
, pero tenga en cuenta que la impresión también imprime una nueva línea al final, por lo que debe agregar una nueva línea final a su programa, de lo contrario, crecerá dos bytes después de la primera ejecución.Microscript II, 38 bytes
fuente
> <> , 34 bytes
Pruébalo en línea! Tenga en cuenta que, para probar esto para valores más pequeños, su valor (menos 1) debe poder generarse en 7 bytes.
Explicación
fuente
Java, 251 bytes (Eclipse IDE)
Esto supone que el proyecto se realizó en Eclipse, utilizando la convención de
.java
archivos en el SRC del directorio de trabajo. Hay otras formas de detectar dónde está la fuente, pero tampoco creo que esto vaya en contra de las reglas.Básicamente abre el código fuente .java y agrega como hasta 2017 (después de un comentario). Cuando el tamaño del archivo de la fuente alcanza un total de 2017 bytes, en su lugar imprimirá 2017.
fuente
C, 197 bytes
fuente
Pitón 2,
21716778 bytesTenga en cuenta que debería haber una nueva línea final. Usé conceptos similares a los que usaba Calconym, ¡así que gracias por la inspiración!
Pruébalo en línea
Probar en 2016 ; Probar en 2017
Versión previa:
Este programa usa el
inspect
módulo para obtener el número de línea actual. Luego, se imprime solo pero con una línea adicional después de la importación, que cambia el número de línea para el siguiente programa. También debería haber una nueva línea final aquí.Pruébalo en línea
fuente
CJam ,
393330 bytescon la entrada
Pruébalo en línea!
Esto es funcionalmente equivalente a mi versión anterior, excepto que evita la necesidad de escribir y escapar de las comillas. La versión anterior:
Que salidas
que salidas
y así. Finalmente el programa
Salidas
2017
.Cómo funciona
Pero, ¿qué hace realmente el código en la entrada?
Si el primer número del programa no es igual a 2017, generará un programa en el que ese número se incrementa una vez más de lo que era esta vez. Si es igual a 2017 (es decir, se ha incrementado 1984 veces), simplemente presione 2017 y finalice. El primer número comienza como 33 (la longitud del código); cada incremento aumenta la longitud del código en 1 Y ese número en 1, por lo que cuando 33 se ha incrementado lo suficiente como para convertirse en 2017, el código también tendrá una longitud de 2017 bytes.
fuente
JavaScript
9883 bytesEso fue todo un desafío ... Supongo que eso es lo que obtengo por requerir que se devuelvan funciones reales y no solo la fuente de la función.
Función original
Estoy usando en
function
lugar de=>
aquí porque este último no admite funciones con nombre, solo asigna funciones anónimas a una variable.Primera iteración
Ejecutar lo anterior en la consola del navegador devuelve una función que, cuando se convierte en una cadena, se ve así:
Llegando a 2017
Como cada función devuelve una nueva función, puede llamar a la función original / su resultado 1934 veces para obtener 2017 .
Probado con Firefox.
fuente