有人使用斐波那契数字建立了一个非常漂亮的时钟,它看起来很不错,但是却无法使用。就是我们喜欢的方式!让我们重新创建它。
时钟由与前五个斐波那契数相对应的5个部分组成,从1(即1、1、2、3、5)开始:
ccbeeeee
ccaeeeee
dddeeeee
dddeeeee
dddeeeee
时钟能够以5分钟为增量显示12小时时间。这是这样的。考虑时间7:20。可以将小时7分解为给定的斐波那契数
7 = 2 + 5
还有5分钟的4个单元。4可以分解为
4 = 2 + 1 + 1
现在,小时显示为红色,分钟显示为绿色,如果小时和分钟都使用数字,则显示为蓝色。如果根本不使用数字,它将保持白色。因此,上面将显示为:
BBGRRRRR
BBGRRRRR
WWWRRRRR
WWWRRRRR
WWWRRRRR
但是,等等,还有更多。上述分解并不是唯一的可能性。一个人也可以写7 = 3 + 2 + 1 + 1
和4 = 3 + 1
,这将给
GGRWWWWW GGBWWWWW
GGBWWWWW GGRWWWWW
BBBWWWWW or BBBWWWWW
BBBWWWWW BBBWWWWW
BBBWWWWW BBBWWWWW
取决于1
选择哪个。当然,还有其他组合。时钟从所有有效分解中随机选择。
正如我所说的那样,这可能不会获得可用性奖,但是看起来确实不错。
挑战
您的任务是实现这样的时钟。如上所述,您的程序(或函数)应将当前时间的ASCII表示形式(四舍五入到5分钟的最后一个整数)打印到STDOUT或最接近的替代形式。您可以选择以任何常用格式读取时间作为输入,或使用标准库函数获取时间。您不能假定当前/给定时间可被5分钟整除。
您的解决方案必须从当前时间的所有可能表示形式中随机选择。也就是说,每个表示必须以非零概率打印。
午夜和中午应被视为0:00
(而不是12:00
)。
您可以选择打印单个尾随换行符。
您可以使用任何四个不同的可打印ASCII字符(字符代码0x20至0xFE)代替RGBW
。请在回答中说明您的选择,并一贯使用。
这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。