Da quando ho visto il primo qualche anno fa, sono sempre stato soggiogato da questo tipo di word clock in cui il tempo è effettivamente scandito dalle parole illuminate o meno in una frase significativa.
Il testo visualizzato su quell'orologio è il seguente.
IT IS HALF TEN
QUARTER TWENTY
FIVE MINUTES TO
PAST TWO THREE
ONE FOUR FIVE
SIX SEVEN EIGHT
NINE TEN ELEVEN
TWELVE O'CLOCK
Il tuo compito è scrivere un tale orologio funzionante. Le parole sono illuminate se e solo se sono rilevanti per la stampa dell'ora corrente. Altrimenti, sono illuminati. Le parole vengono "illuminate" per essere stampate e vengono "illuminate" per essere sostituite da un numero di spazi che sono la lunghezza della parola.
Esempio: se l'ora corrente è 17:23, il testo stampato deve essere esattamente il seguente:
IT IS
TWENTY
FIVE MINUTES
PAST
FIVE
Regole
- Il tempo stampato è la variante 12h, ma senza AM / PM.
- L'arrotondamento viene eseguito solo sulla base dei minuti (i secondi sono totalmente irrilevanti). L'arrotondamento viene eseguito sul multiplo più vicino di 5. Quindi, ad esempio, anche se 17:52:38 è davvero il più vicino alle 17:55, ma poiché i secondi sono irrilevanti, 17:52 viene effettivamente arrotondato per difetto a 17:50, e il testo stampato è "È DIECI MINUTI A SEI" (con relativa spaziatura). Quindi, se
XX
è un multiplo di cinque,XX
verrà utilizzato da HH: (XX-2): 00 fino a HH: (XX + 2): 59. La parolaMINUTES
deve apparire seFIVE
,TEN
oTWENTY
è illuminata nella sezione dei minuti (prima di "TO" o "PAST"). - Tutte le parole non pertinenti vengono sostituite da tutti gli spazi necessari per mantenere il testo nel punto in cui si trova nel modello sopra. Gli spazi finali possono essere tagliati. Gli spazi rilevanti per mantenere il testo nella posizione prevista devono essere mantenuti.
Anche le linee finali possono essere tagliate. Le linee vuote rilevanti devono ancora apparire. Esempio:
IT IS TEN MINUTES PAST TWO
Non illuminare
TEN
sulla prima riga oFIVE
sulla terza riga quando questi valori si riferiscono alle ore.- È possibile accettare un input. Se si accetta un input, l'input sarà il momento di stampare in qualsiasi formato valido desiderato (stringa, elenco di numeri interi, tipo di ora nativo il supporto della propria lingua, ...), ma nessun parametro è consentito se non sono correlati al momento di stampare. Se non si supporta alcun input, è necessario utilizzare l'ora corrente. Se supporti entrambi, è meglio ma non ci sono bonus;)
- Il tuo codice può essere un programma, una funzione, un lambda ma non snippet.
- Se la tua lingua supporta la stampa in qualche modo, deve stampare il risultato (in un file, sullo standard output, non mi dispiace). Se la tua lingua non supporta in alcun modo la stampa, è consentito semplicemente "restituire" il testo previsto. Il risultato può essere tutto maiuscolo o tutto minuscolo, non un mix di entrambi.
- Si applicano scappatoie standard.
- Questo è code-golf quindi vince il codice più corto!
- Nella misura del possibile, si prega di fornire un collegamento a un interprete online della tua lingua.
Casi 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