Formato de tiempo de juego incremental
Objetivo
Los juegos incrementales a menudo tienen un temporizador de cuenta regresiva que expresa los días, horas, minutos y segundos hasta que se complete una tarea. Dependiendo del espacio disponible, pueden formatearse como:
2d 13h
23h 59m 48s
14m
3h 0m 0s
El objetivo de este código de golf es escribir una función o programa que realice este formateo.
Entradas
- El número total de segundos.
- El número máximo de segmentos a la salida.
Salida
- Los segmentos incluyen:
- 0 semanas
- 0 días
- 0h horas
- 0m minutos
- 0 segundos
- Cada segmento está separado por un solo espacio.
- Los segmentos mostrados deben ser contiguos. Por ejemplo, no mostrará horas y segundos sin mostrar minutos, incluso si hay cero minutos.
- Los valores de un solo dígito no tienen ceros a la izquierda, aunque un valor de cero debe mostrarse como
0
. - Los valores se redondean hacia abajo.
- El primer segmento que se muestra es el primer valor distinto de cero.
Casos de prueba
seconds segments output
0 1 0s
123 1 2m
123 2 2m 3s
123 3 2m 3s
82815 3 23h 0m 15s
307891 2 3d 13h
307891 4 3d 13h 31m 31s
604800 1 1w
604800 6 1w 0d 0h 0m 0s
Victorioso
La solución de recuento de bytes más baja en una semana ganará "aceptación".
Ediciones
- Se aclaró qué segmento es primero, como se muestra en los ejemplos.
- Se agregó el caso de prueba 4 según la solicitud.
307891 1
?0w
o1w
.3d
? "El primer segmento que se muestra es el primer valor distinto de cero"Respuestas:
CJam (instantánea),
4138 bytesLo anterior usa notación de intercalación, ya que dos de los caracteres no se pueden imprimir.
Gracias a @ Sp3000 por jugar golf en 2 bytes.
Pruebas
La última versión estable (0.6.5) tiene un error que puede hacer
{}#
que se devuelvan números enteros en lugar de largos. Paradójicamente, esto se puede eludir al convertir a entero (i
).Para ejecutar esto con código con el intérprete en línea, haga clic en este enlace permanente o copie el código de esta pasta .
Alternativamente, puede descargar y construir la última instantánea ejecutando los siguientes comandos:
Puede crear el archivo CJam de esta manera:
Cómo funciona
fuente
Java,
197191bytesAcabo de notar que Java admite declaraciones como
String a[]
. Esto me permitió extraer la declaración deb
yz
en la misma línea, lo que me salvó deString
volver a escribir .fuente
;z=" ")
- muy inteligente.C,
134127110104103 bytesNueva versión:
Versión previa:
fuente
Pyth,
3943 byteseditar: +4 caracteres, porque olvidé el
0s
caso de prueba.Esto incluye 2 caracteres no imprimibles. Obtenga el código real y pruébelo en línea: Demostración
Explicación:
fuente
Python 2.7 -
181178174 bytesMi primer intento de jugar al golf.
fuente
if n!=0
a soloif n
.Julia, 158 bytes
Estoy seguro de que esto podría ser más corto con un enfoque más inteligente, pero esto es lo que tengo por ahora.
Esto crea una función sin nombre que acepta dos enteros como entrada y devuelve una cadena. Para llamarlo, asígnele un nombre, p. Ej.
f=(s,g)->...
.Ungolfed + explicación:
Ejemplos:
fuente
Scala, 147 bytes
fuente
rs , 367 bytes
Demostración en vivo y todos los casos de prueba.
Desordenado, desordenado, desordenado ...
Tarda entre 3 y 7 segundos en ejecutar los casos de prueba en Chrome para Android. No , no utilice el modo de depuración, que puede congelar su navegador en este caso debido a que toda la producción que se imprime.
fuente
C #,
239 237 170164 bytesEsto no es tan compacto como otras soluciones, pero no puedo plantear este desafío sin tener una puñalada por mí mismo.
Esta última iteración se inspiró en la respuesta de ESC .
Sangrado por claridad:
fuente