El desafío es simplista, dado un tiempo de entrada como una cadena en cualquiera de los siguientes formatos:
hh
, hh:mm
o hh:mm:ss
con 0 ≤ hh ≤ 23
, 0 ≤ mm ≤ 59
y 0 ≤ ss ≤ 59
.
Salida a qué hora está usando los siguientes símbolos:
AA LABEL FOR CHARACTER CODE POINT HEXADECIMAL
== ==================== ========== ===========
🕐 Clock Face 01 Oclock 128336 0x1F550
🕑 Clock Face 02 Oclock 128337 0x1F551
🕒 Clock Face 03 Oclock 128338 0x1F552
🕓 Clock Face 04 Oclock 128339 0x1F553
🕔 Clock Face 05 Oclock 128340 0x1F554
🕕 Clock Face 06 Oclock 128341 0x1F555
🕖 Clock Face 07 Oclock 128342 0x1F556
🕗 Clock Face 08 Oclock 128343 0x1F557
🕘 Clock Face 09 Oclock 128344 0x1F558
🕙 Clock Face 10 Oclock 128345 0x1F559
🕚 Clock Face 11 Oclock 128346 0x1F55A
🕛 Clock Face 12 Oclock 128347 0x1F55B
En el siguiente formato:
It is currently {Clock Face 1} with {mm} minutes and {ss} seconds until {Clock Face 2}.
Ejemplos (incluidos todos los casos marginales):
Estuche con solo horas ...
f("12") = "It is currently 🕛."
Estuche con horas y minutos ...
f("12:30") = "It is currently 🕛 with 30 minutes until 🕐."
Estuche con solo horas, pero tiene minutos incluidos como 00 ...
f("12:00") = "It is currently 🕛."
Caso con horas, minutos y segundos ...
f("12:30:30") = "It is currently 🕛 with 29 minutes and 30 seconds until 🕐."
Estuche con horas y minutos, pero tiene segundos incluidos como 00 ...
f("12:30:00") = "It is currently 🕛 with 30 minutes until 🕐."
Caso con horas y minutos, con menos de un minuto hasta la próxima hora ...
f("12:59:59") = "It is currently 🕛 with 1 seconds until 🕐."
No tiene que cambiar de plural a singular.
Caso con horas y minutos, con 1 minuto para la próxima hora ...
f("12:59") = "It is currently 🕛 with 1 minutes until 🕐."
No tiene que cambiar de plural a singular.
Caso usando tiempo militar (sí, debe manejar esto) ...
f("23:30:30") = "It is currently 🕚 with 29 minutes and 30 seconds until 🕛."
Casos inválidos ...
f("PPCG") = This cannot occur, you are guaranteed a valid format by the definition of the problem.
f(66:66:66) = This cannot occur, you are guaranteed valid numbers by the definition of the problem.
f(24:60:60) = This cannot occur, you are guaranteed valid numbers by the definition of the problem.
No tiene que ajustarse a ningún estilo de salida para casos no válidos, los errores están bien.
En general, el desafío es bastante simplista, pero en mi opinión parece ser lo suficientemente dinámico como para ser divertido. El código más corto aquí es el ganador ya que no hay mucho aspecto variable en el código que no sea la longitud.
0 < hh < 24
,0 < mm < 60
y0 < ss < 60
, querías decir0 ≤ hh ≤ 23
,0 ≤ mm ≤ 59
y0 ≤ ss ≤ 59
.AM
o lasPM
etiquetas?Respuestas:
Befunge,
256250 bytesPruébalo en línea!
Los resultados están codificados como utf-8, ya que eso funciona mejor con TIO, pero si está probando localmente, es posible que deba ajustar la página de códigos predeterminada de su sistema para ver las caras del reloj correctamente. De lo contrario, simplemente redirija la salida a un archivo y ábralo en un editor compatible con utf-8.
Explicación
Las primeras tres líneas leen las horas, minutos y segundos de stdin, verificando EOF o un salto de línea después de cada valor, y sustituyendo ceros por los componentes que faltan en la entrada. En la línea cuatro, ajustamos el valor de los minutos si los segundos no son cero, convertimos el valor de la hora en el rango de 0 a 11 (para que coincida con el carácter Unicode apropiado para cada hora) y escribimos la parte inicial de la salida, incluyendo La primera cara del reloj.
Es en este punto que necesitamos seguir diferentes ramas dependiendo de qué componentes son distintos de cero. La primera prueba, al comienzo de la línea cinco, solo verifica si tanto los minutos como los segundos son cero. Si es así, escribimos una final
.
y salimos . De lo contrario, las líneas seis y siete tratan los casos restantes: escribir el texto y los valores apropiados, antes de que todas las rutas se combinen nuevamente en la línea cinco para escribir la cara del reloj final (ejecución de derecha a izquierda).fuente
JavaScript (ES6), 201
Menos golf
Prueba
fuente
String
en su código con""
una cadena vacía para ahorrarse 4 bytes :). Ah, mierda, él también puede hacerlo.It is currently 🕛 with 60 minutes until 🕐
. Creo que deberíaIt is currently 🕛.
JavaScript (ES6), 201 bytes
226 bytes si tiene en cuenta los plurales:
fuente
PowerShell ,
250243 bytesPruébalo en línea!
fuente
C, 241 bytes
Escribe UTF-8 en stdout.
Pruébalo en línea!
Código con espacios en blanco:
fuente