Depuis que j'ai vu le premier il y a quelques années, j'ai toujours été soumis à ce genre d'horloge de mots où le temps est en fait précisé par des mots éclairés ou non en une phrase significative.
Le texte affiché sur cette horloge est le suivant.
IT IS HALF TEN
QUARTER TWENTY
FIVE MINUTES TO
PAST TWO THREE
ONE FOUR FIVE
SIX SEVEN EIGHT
NINE TEN ELEVEN
TWELVE O'CLOCK
Votre tâche consiste à écrire une telle horloge de travail. Les mots sont allumés si et seulement s'ils sont pertinents pour imprimer l'heure actuelle. Sinon, ils sont allumés. Les mots sont "éclairés" en étant imprimés et "éclairés" en étant remplacés par un nombre d'espaces correspondant à la longueur du mot.
Exemple: si l'heure actuelle est 17h23, le texte imprimé doit être exactement le suivant:
IT IS
TWENTY
FIVE MINUTES
PAST
FIVE
Règles
- L'heure imprimée correspond à la variante 12h, mais sans AM / PM.
- L'arrondi est effectué sur la base de minutes seulement (les secondes sont totalement sans importance). L'arrondi est fait au plus proche multiple de 5. Ainsi, par exemple, même si 17:52:38 est vraiment proche de 17:55, mais comme les secondes ne sont pas pertinentes, 17:52 est en fait arrondi à 17:50, et le texte imprimé est "C'EST DIX MINUTES À SIX" (avec l'espacement approprié). Donc, si
XX
est un multiple de cinq,XX
sera utilisé de HH: (XX-2): 00 jusqu'à HH: (XX + 2): 59. Le motMINUTES
doit apparaître siFIVE
,TEN
ouTWENTY
est allumé dans la section des minutes (avant "TO" ou "PAST"). - Tous les mots non pertinents sont remplacés par autant d'espaces que nécessaire pour conserver le texte là où il se trouve dans le modèle ci-dessus. Les espaces de fuite peuvent être coupés. Les espaces permettant de conserver le texte à la position attendue doivent être conservés.
Les lignes de fuite peuvent également être coupées. Les lignes vides pertinentes doivent encore apparaître. Exemple:
IT IS TEN MINUTES PAST TWO
Ne pas allumer
TEN
sur la première ligne ouFIVE
sur la troisième ligne lorsque ces valeurs se rapportent aux heures.- Vous pouvez accepter une entrée. Si vous acceptez une entrée, elle sera l'heure d'impression dans n'importe quel format valide (chaîne, liste d'entiers, type d'heure native prise en charge de la langue, ...), mais aucun paramètre n'est autorisé s'ils ne sont pas liés. au moment d'imprimer. Si vous ne supportez aucune entrée, vous devez utiliser l'heure actuelle. Si vous soutenez les deux, c'est mieux mais il n'y a pas de bonus;)
- Votre code peut être un programme, une fonction, un lambda mais pas un extrait.
- Si votre langue prend en charge l'impression de quelque manière que ce soit, elle doit imprimer le résultat (dans un fichier, sur la sortie standard, cela ne me dérange pas). Si votre langue ne prend pas en charge l'impression, il est autorisé à simplement "renvoyer" le texte attendu. Le résultat peut être soit tout en majuscule, soit tout en minuscule, et non un mélange des deux.
- Les failles standard s'appliquent.
- C'est du code-golf donc le code le plus court gagne!
- Dans la mesure du possible, veuillez fournir un lien vers un interprète en ligne de votre langue.
Cas de test
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