Так как я видел первый несколько лет назад, я всегда был покорен этим типом словесных часов, где время фактически прописано словами, подсвеченными или не значащими предложение.
Текст, отображаемый на этих часах, следующий.
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 до ЧЧ: (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