Seit ich den ersten vor ein paar Jahren gesehen habe, war ich immer unterworfen von dieser Art von Wortuhr, bei der die Zeit tatsächlich durch Wörter ausgedrückt wird, die in einem aussagekräftigen Satz aufleuchten oder nicht.
Der auf dieser Uhr angezeigte Text ist der folgende.
IT IS HALF TEN
QUARTER TWENTY
FIVE MINUTES TO
PAST TWO THREE
ONE FOUR FIVE
SIX SEVEN EIGHT
NINE TEN ELEVEN
TWELVE O'CLOCK
Ihre Aufgabe ist es, eine solche Uhr zu schreiben. Wörter leuchten nur dann auf, wenn sie für das Drucken der aktuellen Uhrzeit relevant sind. Ansonsten sind sie beleuchtet. Wörter werden "beleuchtet", indem sie gedruckt werden, und "beleuchtet", indem sie durch eine Anzahl von Leerzeichen ersetzt werden, die der Länge des Wortes entsprechen.
Beispiel: Wenn die aktuelle Uhrzeit 17:23 Uhr ist, muss der gedruckte Text genau wie folgt lauten:
IT IS
TWENTY
FIVE MINUTES
PAST
FIVE
Regeln
- Die gedruckte Zeit ist die 12-Stunden-Variante, jedoch ohne AM / PM.
- Die Rundung erfolgt nur auf der Basis von Minuten (Sekunden sind völlig irrelevant). Die Rundung wird auf das nächste Vielfache von 5 durchgeführt. Obwohl also 17:52:38 wirklich am nächsten zu 17:55 liegt, wird 17:52 tatsächlich auf 17:50 abgerundet, da die Sekunden irrelevant sind. und der gedruckte Text ist "ES IST ZEHN MINUTEN ZU SECHS" (mit relevantem Abstand). Wenn
XX
also ein Vielfaches von fünf ist,XX
wird von HH: (XX-2): 00 bis HH: (XX + 2): 59 verwendet. Das WortMINUTES
muss erscheinen wennFIVE
,TEN
oderTWENTY
sind im Abschnitt Minute (vor „TO“ oder „PAST“) beleuchtet. - Alle irrelevanten Wörter werden durch so viele Leerzeichen ersetzt, wie erforderlich sind, damit der Text dort bleibt, wo er sich in der obigen Vorlage befindet. Nachgestellte Leerzeichen können abgeschnitten werden. Leerzeichen, die relevant sind, um den Text an der erwarteten Position zu halten, müssen beibehalten werden.
Nachlaufende Linien können ebenfalls abgeschnitten werden. Relevante Leerzeilen müssen noch erscheinen. Beispiel:
IT IS TEN MINUTES PAST TWO
Leuchten Sie nicht
TEN
in der ersten oderFIVE
dritten Zeile, wenn sich diese Werte auf die Stunden beziehen.- Sie können eine Eingabe akzeptieren. Wenn Sie eine Eingabe akzeptieren, ist die Eingabe die Zeit zum Drucken in einem beliebigen gültigen Format (Zeichenfolge, Liste der Ganzzahlen, native Zeit, geben Sie Ihre Sprachunterstützung ein, ...), aber keine Parameter sind zulässig, wenn sie nicht zusammenhängen zu der Zeit zu drucken. Wenn Sie keine Eingabe unterstützen, müssen Sie die aktuelle Uhrzeit verwenden. Wenn Sie beide unterstützen, ist das besser, aber es gibt keinen Bonus;)
- Ihr Code kann ein Programm, eine Funktion, ein Lambda, aber kein Snippet sein.
- Wenn Ihre Sprache das Drucken in irgendeiner Weise unterstützt, muss sie das Ergebnis drucken (in einer Datei, auf der Standardausgabe, macht es mir nichts aus). Wenn Ihre Sprache das Drucken in keiner Weise unterstützt, kann der erwartete Text einfach "zurückgegeben" werden. Das Ergebnis kann entweder nur Groß- oder Kleinschreibung sein, nicht eine Mischung aus beiden.
- Es gelten Standardlücken.
- Das ist Code-Golf, also gewinnt der kürzeste Code!
- Bitte geben Sie, soweit möglich, einen Link zu einem Online-Dolmetscher Ihrer Sprache an.
Testfälle
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