自从几年前我看到第一个单词以来,我总是被这种字时钟所困扰,在这种时钟中,时间实际上是由点亮或未点亮成有意义的句子来说明的。
该时钟上显示的文本如下。
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
规则
- 打印的时间为12h,但没有AM / PM。
- 四舍五入仅以分钟为单位(秒完全无关)。舍入到最接近的5的倍数。因此,例如,即使17:52:38实际上最接近17:55,但是由于秒数无关紧要,因此17:52实际上被舍入为17:50,并且打印的文本是“六到十分钟”(具有相关的间距)。因此,如果
XX
为5的倍数,XX
则将从HH:(XX-2):00到HH:(XX + 2):59使用。MINUTES
如果或在分钟部分点亮(在“ TO”或“ PAST”之前)FIVE
,则必须出现该单词。TEN
TWENTY
- 所有不相关的单词都将替换为所需的任意空格,以将文本保留在上方模板中的位置。尾随空格可能会被修剪。必须保留与将文本保持在预期位置相关的空间。
尾随线也可能被修剪。仍需要出现相关的空行。例:
IT IS TEN MINUTES PAST TWO
当这些值表示小时数时,请勿
TEN
在第一行或FIVE
第三行上点亮。- 您可以接受输入。如果您接受输入,则输入将是您想要的任何有效格式(字符串,整数列表,本地时间类型,语言支持等)的打印时间,但是如果参数不相关,则不允许使用到打印时间为止。如果不支持任何输入,则必须使用当前时间。如果两者都支持,那会更好,但是没有任何奖金;)
- 您的代码可能是程序,函数,lambda,但不是代码段。
- 如果您的语言支持任何方式的打印,则必须打印结果(我不介意在文件中的标准输出中)。如果您的语言不支持任何方式的打印,则可以简单地“返回”所需的文本。结果可能全部为大写或全部为小写,而不是两者兼而有之。
- 有标准漏洞。
- 这是代码高尔夫球,所以最短的代码获胜!
- 在可能的范围内,请提供指向您所用语言的在线口译员的链接。
测试用例
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