Desde que vi el primero hace unos años, siempre me subyugó este tipo de reloj de palabras en el que el tiempo se deletrea con palabras que se iluminan o no en una oración significativa.
El texto que se muestra en ese reloj es el siguiente.
IT IS HALF TEN
QUARTER TWENTY
FIVE MINUTES TO
PAST TWO THREE
ONE FOUR FIVE
SIX SEVEN EIGHT
NINE TEN ELEVEN
TWELVE O'CLOCK
Su tarea es escribir un reloj que funcione. Las palabras se iluminan si y solo si son relevantes para imprimir la hora actual. De lo contrario, están encendidos. Las palabras se "iluminan" al imprimirse y se "iluminan" al ser reemplazadas por varios espacios que son la longitud de la palabra.
Ejemplo: si la hora actual es 17:23, el texto impreso debe ser exactamente el siguiente:
IT IS
TWENTY
FIVE MINUTES
PAST
FIVE
Reglas
- El tiempo impreso es la variante 12h, pero sin AM / PM.
- El redondeo se realiza en base a minutos solamente (los segundos son totalmente irrelevantes). El redondeo se realiza al múltiplo más cercano de 5. Entonces, por ejemplo, aunque 17:52:38 realmente es más cercano a 17:55, pero dado que los segundos son irrelevantes, 17:52 se redondea a 17:50, y el texto impreso es "ES DIEZ MINUTOS A SEIS" (con espacios relevantes). Entonces, si
XX
es un múltiplo de cinco,XX
se utilizará desde HH: (XX-2): 00 hasta HH: (XX + 2): 59. La palabraMINUTES
debe aparecer siFIVE
,TEN
oTWENTY
se iluminan en la sección minutos (antes de "A" o "pasado"). - Todas las palabras irrelevantes se reemplazan por tantos espacios como sea necesario para mantener el texto donde se encuentra en la plantilla de arriba. Los espacios finales pueden recortarse. Deben mantenerse los espacios relevantes para mantener el texto en la posición esperada.
Las líneas finales también se pueden recortar. Las líneas vacías relevantes aún deben aparecer. Ejemplo:
IT IS TEN MINUTES PAST TWO
No encienda
TEN
en la primera línea oFIVE
en la tercera línea cuando estos valores se refieren a las horas.- Puede aceptar una entrada. Si acepta una entrada, la entrada será el momento de imprimir en cualquier formato válido que desee (cadena, lista de enteros, hora nativa, escriba su soporte de idioma, ...), pero no se permiten parámetros si no están relacionados a la hora de imprimir. Si no admite ninguna entrada, debe usar la hora actual. Si admite ambos, eso es mejor, pero no hay bonificación;)
- Su código puede ser un programa, una función, un lambda pero no un fragmento.
- Si su idioma admite la impresión de alguna manera, debe imprimir el resultado (en un archivo, en la salida estándar, no me importa). Si su idioma no admite la impresión de ninguna manera, se le permite simplemente "devolver" el texto esperado. El resultado puede ser todo en mayúsculas o todas en minúsculas, no una mezcla de ambos.
- Se aplican lagunas estándar.
- Este es el código de golf, por lo que gana el código más corto.
- En la medida de lo posible, proporcione un enlace a un intérprete en línea de su idioma.
Casos de prueba
Input: <no input> (the current local time is 19:20)
Output:
IT IS
TWENTY
MINUTES
PAST
SEVEN
Input: 13:15
Output: (empty line is being printed)
IT IS
QUARTER
PAST
ONE
Input: 13:58
Output: (rounding)
IT IS
TWO
O'CLOCK
Input: 14:30
Output: (half is always a edge-case)
IT IS HALF
PAST TWO
Input: 15:35
Output: (light up "TO")
IT IS
TWENTY
FIVE MINUTES TO
FOUR
Input: 10:00
Output: (do not use the TEN or FIVE on the first line when referring to the hours)
IT IS
TEN
O'CLOCK
Input: 12:00
Output: (O'CLOCK and a lot of empty lines)
IT IS
TWELVE O'CLOCK