Оскільки я побачив перший кілька років тому, я завжди був підкорений такому слову годинник, де час насправді прописано словами, засвіченими чи не змістовними реченнями.
Текст, відображений на цьому годиннику, наступний.
IT IS HALF TEN
QUARTER TWENTY
FIVE MINUTES TO
PAST TWO THREE
ONE FOUR FIVE
SIX SEVEN EIGHT
NINE TEN ELEVEN
TWELVE O'CLOCK
Ваше завдання - написати такий робочий годинник. Слова загоряються, якщо і лише якщо вони стосуються друку поточного часу. Інакше вони запалюються. Слова "запалюються" шляхом друку і "запалюються", замінюючись кількістю пробілів довжиною слова.
Приклад: якщо поточний час становить 17:23, друкований текст повинен бути саме таким:
IT IS
TWENTY
FIVE MINUTES
PAST
FIVE
Правила
- Друкований час - це 12-годинний варіант, але без AM / PM.
- Округлення проводиться лише на основі хвилин (секунди абсолютно не мають значення). Округлення проводиться до найближчого кратного 5. Так, наприклад, хоча 17:52:38 дійсно найближче до 17:55, але оскільки секунди не мають значення, 17:52 насправді округляється до 17:50, а надрукований текст - "ДЕСЯТЬ ХВІЛТИН ДО ШЕСТА" (з відповідним проміжком). Отже, якщо
XX
кратне п’ять,XX
буде використовуватися від НН: (XX-2): 00 до HH: (XX + 2): 59. СловоMINUTES
має з'явитися , якщоFIVE
,TEN
абоTWENTY
висвітлені в розділі хвилин (до «К» або «ПОВЗ»). - Усі неактуальні слова замінюються на стільки пробілів, скільки потрібно для збереження тексту, де він розташований у вищевказаному шаблоні. Задні проміжки можуть бути оброблені. Необхідно зберегти місця, необхідні для збереження тексту на очікуваній позиції.
Задні лінії також можуть бути оброблені. Відповідні порожні рядки все ще потрібно відображати. Приклад:
IT IS TEN MINUTES PAST TWO
Не засвічуйте ні
TEN
першого, ніFIVE
третього рядка, коли ці значення стосуються годин.- Ви можете прийняти вхід. Якщо ви приймаєте введення, вхід буде часом для друку у будь-якому потрібному форматі (рядок, список цілих чисел, рідний час, введіть мовну підтримку, ...), але параметри не дозволені, якщо вони не пов'язані до часу друку. Якщо ви не підтримуєте введення даних, ви повинні використовувати поточний час. Якщо ви підтримуєте обидва, це краще, але бонусу немає;)
- Ваш код може бути програмою, функцією, лямбда, але не фрагментом.
- Якщо ваша мова будь-яким чином підтримує друк, вона повинна надрукувати результат (у файлі, на стандартному виході, я не проти). Якщо ваша мова жодним чином не підтримує друк, дозволено просто "повернути" очікуваний текст. Результатом може бути або велика, або велика, а не суміш обох.
- Застосовуються стандартні лазівки.
- Це код-гольф, тому найкоротший код виграє!
- У міру можливого, будь ласка, надайте посилання на онлайн-перекладача вашої мови.
Тестові кейси
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