cuenta regresiva
Su objetivo para este desafío de código de golf es contar y, mientras tanto, reciclar números. Dejame explicar.
Primero, su aplicación lee un número, ya sea como argumento del programa o usando stdin. A continuación, simplemente tendrá que realizar una cuenta regresiva como esta:
10 9 8 7 6
(en orden descendente )
¡Pero espera, hay más!
Reciclaje
Hay situaciones en las que podemos imprimir cada número, pero no enumeramos cada número, ¡podemos reciclar! Déjame darte un ejemplo rápido:
Input: 110
Output: 11091081071061051041031021010099... etc
Recycled: 10 1
Todavía hemos enumerado todos los números, 110, 109, 108, pero hemos reciclado un 0 y un 1 .
Otro ejemplo:
Input: 9900
Output: 9900989989897989698959894... etc
Recycled: 9 98
Código-desafío de golf
- Leer un número (argumento o stdin)
- Imprima la cuenta regresiva en orden descendente mientras recicla todos los números posibles (para stdout o archivo)
- Deténgase cuando llegue a 1 O en el momento en que haya reciclado de 0 a 9 (pase lo que pase primero)
Ejemplo simple (hasta 1 alcanzado):
Input: 15
Output: 15141312110987654321
(Notice the 110 instead of 1110)
Ejemplo más avanzado (todo reciclado):
Input: 110
Output: 110910810710610510410310210100998979695949392919089887868584838281807978776757473727170696867665646362616059585756554535251504948474645443424140393837363534332313029282726252423221
Recycled: 10 9 8 7 6 5 4 3 2
(We've recycled all 0-9)
Respuestas:
T-SQL -
291277267217199191166158153145142128117Después de abordar esto de una manera nueva, logré bajar a 145 (142 después de un par de pequeños ajustes), no muy mal. Eso significa que podría competir por plata o bronce. ^^
Esto no imprime una lista, selecciona los resultados. La pregunta nunca dio detalles sobre la salida, por lo que esto debería estar bien. Esto todavía tiene el mismo límite de 100 en la entrada, en parte porque estoy abusando del hecho de que cada undécimo término por debajo de 100 pierde un carácter y en parte debido al límite predeterminado de 100 recursiones en las expresiones de tabla comunes.
fuente
Python 143
147La sangría del primer nivel es espacio, el segundo nivel es char de tabulación.
fuente
p=o=''
parámetros opcionales en la función; puedes usar*
paraand
adentron and r<1023
o tal vez inclusor<1023*n
;while x-1:
puede afeitar un espacio comowhile~-x
. Además, puede ser más corto usar un conjunto de dígitos en lugar de una máscara de bits para almacenar qué dígitos se han usado.Haskell,
154149147145128120119117 bytesagregando en el control de reciclaje cuestan muchos personajes ... suspiro
jugué un poco al recordar qué dígitos aún no se reciclaron y al detenerse cuando la lista está vacía. luego jugué un poco más al pasar a la recursión explícita y algunos trucos más.
salida de ejemplo:
fuente
Python 2:
119117Marcar esto como wiki comunitario porque es solo una versión más golfizada de la respuesta de Will .
fuente
d=s,={''}
trabajo?d=s,={''}
es equivalente ad={''}; s,={''}
.s,={''}
usa el desempaquetado de secuencias, una característica más comúnmente utilizada en declaraciones comoa, b = (b, a)
, pero también puede usarla para extraer el único elemento de una secuencia de un solo elemento.len(d)%11*n
, aunque parece que es discutible usar un bucle ejecutivo.set()
que un conjunto de un solo elemento{x}
. Entonces, flornquake lo inicializa con un miembro de relleno y verifica si tiene los diez dígitos al ver si tiene once elementos. Como la cadena vacía debe inicializarses
, está diseñada para servir como este miembro de relleno, combinando estas inicializaciones para guardar caracteres.len(d)%11*n
hubiera sido agradable. :)Ruby,
145139130 bytesEnfoque similar al de Will, excepto que no estoy usando una máscara de bits, sino un conjunto de dígitos no utilizados. La entrada es a través de STDIN.
Hay una versión alternativa que usa en
while
lugar detimes
pero lo que sea que intente, el número de bytes es el mismo:fuente
CJam,
8077655754 PersonajesProbablemente no esté optimizado, perodespués de muchas optimizaciones y depuración aquí está la conversión directa de mi respuesta ES6 en CJam:Pruébelo en línea aquí . La función toma el número como STDIN y genera la cuenta regresiva reciclada, deteniéndose en el medio si se completa el reciclaje.
Intentaré jugar más al golf.
Cómo funciona:
La idea básica es que para cada número C de cuenta regresiva, verifique si los primeros dígitos H son iguales a los últimos dígitos H de la cadena resultante, donde H va del número de dígitos en C a 0
fuente
JavaScript ES6,
149146 caracteresTal detallado, muchos personajes, wow.
Ejecútelo en la última consola web de Firefox.
Después de ejecutarse, crea un método
C
que puede usar comoACTUALIZACIÓN : a veces, el viejo plano
return
es más corto que el cierre de la función de flecha :)fuente