Introducción
Imagine que la línea de caracteres es, de hecho, dos filas. Fila superior - puntos - representa las horas (sistema de 24 horas), mientras que inferior - comas - representa minutos . Un personaje puede representar hora, minuto o ambos , siempre que sea posible.
Al principio, probablemente tendría que convertir minutos desde la medianoche a horas y minutos .
El resultado es la cadena que muestra la hora actual en "formato de punto". El recuento de puntos ( apóstrofe cuenta aquí como un punto y se llamará así ) es el recuento de horas desde la medianoche y el recuento de comas es el recuento de minutos. Mostraré algunos ejemplos para que quede claro.
- (Observación) hh: mm -
result - (Solo horas) 05:00 -
''''' - (Solo minutos) 00:08 -
,,,,,,,, - (horas <minutos) 03:07 -
;;;,,,, - (horas> minutos) 08:02 -
;;'''''' - (horas = minutos) 07:07 -
;;;;;;; - (el comienzo del día) 00:00 -
( resultado vacío )
Observe que el carácter "ambos" se puede usar como máximo 23 veces, para 23: xx, donde xx es 23 o más.
Los símbolos
Si el carácter tiene que (ver la regla 5) escapar en su idioma, puede cambiarlo a una de las alternativas. Si dichas alternativas no son suficientes, puede usar otros símbolos, pero sea razonable. Simplemente no quiero escapar para ser una barrera.
;(punto y coma): marcador para horas y minutos (alt::)'(apóstrofe) - marcador por horas (alt:'``°),(coma) - marcador de minutos (alt:.)
Reglas adicionales
- ¡El código con la menor cantidad de bytes gana!
- Tienes que usar ambos símbolos siempre que sea posible. Para 02:04 el resultado no puede ser
'',,,,, ni;',,,. Tiene que ser;;,, - Entrada: puede ser un parámetro de script / aplicación, entrada del usuario (como readline) o variable dentro del código
3.1. Si se usa la variable dentro del código, entonces su longitud debe ser la más larga posible. Es1439(23:59), así que se vería comot=1439 - La parte común que está simbolizada por el carácter "ambos" (12 en 12:05, 3 en 03:10) debe colocarse al comienzo de la cadena
- Los símbolos pueden reemplazarse por alternativas solo si tendrían que escaparse en su código.
- La entrada se da en minutos después de las 00:00 . Puede suponer que este es un número entero no negativo.
Casos de prueba
Input: 300
Output: '''''
Input: 8
Output: ,,,,,,,,
Input: 187
Output: ;;;,,,,
Input: 482
Output: ;;''''''
Input: 427
Output: ;;;;;;;
Input: 0
Output: (empty)


1439es23:59y no1339. (23 x 60 + 59).Respuestas:
Pyth, 19 bytes
Banco de pruebas
fuente
CJam,
222019 bytesToma información de STDIN:
Pruébalo aquí.
Explicación
Fue realmente afortunado lo bien que las cosas funcionaron juntas aquí, en particular la asignación de horas
'y minutos a,tal que el orden de horas y minutos en la pila coincidiera con la representación de cadena del personaje.Este es el único bloque de 3 bytes que he encontrado hasta ahora. Sin embargo, hubo toneladas de soluciones de 4 caracteres:
fuente
GNU Sed, 37
La puntuación incluye +1 para la
-Eopción de sed.No estaba particularmente impresionado con el golf de mi respuesta bash , así que pensé en probar con sed por diversión.
La entrada está en unario, según esta meta-respuesta .
Pruébalo en línea
fuente
Python 2, 56 bytes
Una función que imprime (un carácter más corto que
t=input();).El método es similar al de Loovjo . El número de
,es diferente entre minutos y horas, con un mínimo implícito de 0. Porque', es la negación. Para;, calculaminimplícitamente tomando tantas;horas como sea, luego truncando a la cantidad de minutos.Guarda caracteres para guardar
d, pero no la cantidad de horas y minutos aquí. El análogo con lambda fue dos caracteres más largo (58), por lo que las asignaciones variables valen la pena.Procesar la entrada directamente tampoco guardaba caracteres (58):
Otra estrategia con rebanar, mucho más larga (64):
fuente
Retina , 24
Puerto trivial de mi respuesta sed .
La entrada está en unario, según esta meta-respuesta .
Pruébalo en línea.
fuente
Pure Bash (sin utilidades externas), 103
Gracias a @ F.Hauri por guardar 2 bytes.
fuente
$1y$2enp()y escribirp , $cen la línea 3.printf "%s", tenercvacío funcionará bien (aunque no se reutilice)C, 119 bytes
Detallado
fuente
putcharliterales & enteros como caracteres ahorra un byte, tirando de los puntos y comas dentro de la macro ahorra dos más :)whileen su macro #define. -1 byteHaskell,
6866 bytesEjemplo de uso:
El bit inteligente aquí es que
replicatedevolverá la cadena vacía si la longitud dada es negativa o cero, por lo que puedo aplicarla a ambas diferencias y solo se mostrará la positiva. La primera parte es fácil, ya que el número de punto y coma es solo el mínimo de los dos. LuegozipWithaplica la función a los elementos correspondientes.EDITAR: me di cuenta de que estaba usando el personaje equivocado durante minutos
EDIT 2: guardado 2 bytes gracias a @Laikoni
fuente
concat$conid=<<.JavaScript (ES6) 69
fuente
Powershell,
9985 bytesparam($n)";"*(($m=$n%60),($h=$n/60))[($b=$m-gt$h)]+"'"*(($h-$m)*!$b)+","*(($m-$h)*$b)Usando el método de Loovjo , esta es mi implementación de PowerShell.
sin golf
Guardado 14 bytes gracias a AdmBorkBork
fuente
$my$hdeclaraciones en él, y luego usando la multiplicación de Boole. Me gusta así -param($n)';'*(($m=$n%60),($h=$n/60))[($b=$m-gt$h)]+'°'*(($h-$m)*!$b)+','*(($m-$h)*$b)Python 3, 98 bytes
Probablemente no sea la mejor respuesta, ¡pero fue muy divertido!
fuente
Python 2, 61 bytes
Explicación:
fuente
PHP, 81 bytes
Fui por la entrada variable ya que es más corta que leer
STDINo tomar argumentos de la línea de comandos.fuente
240. Prueba$i>=min($h,$m)?$h<$m?",":"'":";"(+1 byte). O usefor($_=1439;$i<max($h=0|$_/60,$m=$_%60);)echo"',;"[$i++<min($h,$m)?2:$h<$m];(76 bytes). Por cierto: la comilla simple hace-rimposible; por lo que debe usar la tecla de retroceso durante horas si está en una cadena o°independiente (no necesita comillas -> -1 byte).JavaScript (ES6),
7771 bytesfuente
Perl 6,
103101989769 bytesEmite varias matrices, pero a la mierda,disfruta. Como de costumbre, todas las oportunidades de golf son apropiadas.Editar: -2 bytes: se valiente y eliminó algunos lanzamientos.
Edit2: -3 bytes eliminando las matrices.
Edit3: -1 byte para imprimir en el formato correcto, usando "lambdas" y eliminando las paréntesis.
Edit4: (lo siento chicos) abusando de esas horas, los minutos deberían devolver 0 y todo lo contrario. Eliminado si las declaraciones. Luego quité los corchetes y me di cuenta de que no necesitaba la lambda. -28 bytes :)
Woah estoy mejorando en esto.
fuente
C, 141 bytes
fuente
h>0||m>0. Entoncesh--;m--;solo necesita una vez en cada iteración y el{}forif/elsequedaría obsoleto.else if(h&&!m)simplemente puede tenerelse if(h)ifyelse.scanf().%24sea necesario: la entrada máxima es 23:59.Gema, 119 caracteres
Ejecución de muestra:
fuente
Matlab: 89 bytes
Prueba:
fuente
SmileBASIC, 59 bytes
Explicado:
Se ve bastante terrible, ya que la parte inferior de
;ni siquiera es la misma que,en la fuente de SmileBASICfuente
PHP, 81 bytes
algunas soluciones más:
Corre con
echo <time> | php -R '<code>'.Reemplazar
1439con entrada, guardar en archivo, ejecutar.fuente
Ruby, 50 caracteres.
Gracias a:
Esperé tanto tiempo para usar
Numeric.divmod, solo para darme cuenta de que es horriblemente largo.Ejecución de muestra:
fuente
(?;*h=t/60)[0,m=t%60]",',"[0<=>m-=h]*m.abs05AB1E , 25 bytes
Pruébalo en línea!
60‰vy„'.Nè×}definitivamente se puede acortar, simplemente no pude resolverlo, y dudo que pueda reducir 7 bytes para ganar con este enfoque a menos que haya una versión vectorial de×.Ejemplo (con una entrada igual a 63):
D60÷''×s60%'.ׂ.BøJ„'.';:ðKera mi versión original, pero eso es incluso MÁS costoso que divmod.60‰WDµ';ˆ¼}-¬0Qi'.ë''}ZׯìJotro método que probé ...fuente
cc , 95 bytes
Pruébalo en línea!
fuente
Java 8,
1019986 bytesExplicación:
Pruébalo aquí
fuente