让我们制作一个ASCII艺术时钟和日历,告诉我们当前的月份,每月的某天,一周的某天,小时,分钟,以及它是夜晚还是白天(但不是年份或秒)。
在任何特定时间,日历将看起来像这样:(看起来更好,行距更少)
________________________________________________________________
|\ ____________________________________________________________ /|
| | ___ | |
| | _( ) | |
| | (___)__) -.- | |
| | | |
| | | |
| | -.- | |
| | -.- | |
| | ___ | |
| | _( ) | |
| | (___)__) | |
| | | |
| | ___ | |
| | _( ) | |
| | _ (___)__) | |
| | /|\ | |
| | / | \ | |
| | /__|__\ | |
| |____|____ | |
| |\_______/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-~~-~~~~~| |
| |____________________________________________________________| |
|/______________________________________________________________\|
它始终是一个66 x 23字符的“相框”,其边框永远不会改变。
框架中的图像告诉我们时间和日期:
- 在白天(6:00 am-5:59 pm),该月取决于
-.-
天空中的鸟类数量()。一月= 1鸟,二月= 2鸟,依此类推。 - 在夜间(6:00 pm-5:59 am),鸟类会被3倍的星星(
*
)代替。一月= 3星,二月= 6星,以此类推。鸟类和星星永远不会同时出现在天空中。 -
水上两个破折号()之间的字符数决定了该月的一天。例如,~~-~~~~-~~
表示这是该月的第四天。根据分钟的不同,船可能需要位于破折号之间(破折号不会环绕)。- 一周中的一天取决于天空中的云彩数量(所有云彩看起来都一样)。星期日= 0云,星期一= 1云,...,星期六= 6云。
- 小时取决于水(和船)的水位。在最低点(如上)是1点,在2点是1个字符高,依此类推,直到12点,然后回到1点。(这是12而不是24小时制。)
- 分钟由船的水平位置确定。凌晨时分,船触及车架的左边缘(如上所述)。随后的每一分钟,船向右移动一个字符。在第51至59分钟内,它从框架的右侧循环回到左侧。
因此,假设上面的示例有3鸟,3云,虚线之间有2个字符,最低水位和最左边的船,我们可以说出日期是3月2日,星期三:下午00点。
这是4月25日星期日凌晨3:58的另一个示例:
________________________________________________________________
|\ ____________________________________________________________ /|
| | | |
| | * * | |
| | * * * | |
| | * | |
| | | |
| | * | |
| | * * | |
| | | |
| | * | |
| | | |
| | * | |
| | _ | |
| | /|\ * | |
| |/ | \ | |
| |__|__\ /| |
| |__|____ __| |
| |______/~~~~~~~~~~~~~~~~~~~-~~~~~~~~~~~~~~~~~~~~~~~~~-~~~~~\_| |
| | | |
| | | |
| |____________________________________________________________| |
|/______________________________________________________________\|
目标
您的目标是编写最短的程序,并使用该程序运行的时间将这些ASCII艺术“日历”输出到stdout。
程序的每次运行都应输出一个时间场面。更新不应是自动的(或动画的)。
云,星和鸟应该随机地放置在天空中(因此,每次运行,即使同时运行,也可能会有所不同)。他们不应该重叠船或彼此。(此外,破折号不应与船体重叠。)
请注意,我所描述的东西都没有出现在水下。这是您要做的。在每周预定的一个小时内(您的选择),应该在水下绘制一些有趣的东西。可能是海怪,沉船或其他任何东西,由您决定。在那一小时内,您甚至可以更改场景其余部分的设计(停留在框架范围内)。
计分
这是一个代码高尔夫受欢迎度竞赛组合。
你的分数是(bytes in program) - 4 * (upvotes - downvotes)
。最低分获胜。
如果您使用非ASCII字符,请使用http://mothereff.in/byte-counter作为字节计数器。
注释和更新
您可以使用浮标而不是破折号,因为让我们面对现实,它们更合适:
| | ~~(_)~~~(_)~~ (3rd of the month)
破折号(或浮标)不必一定是随机的,但如果是随机的,那将是很好的。
- 您的“特殊时间”应持续时间从小时顶部的60分钟到下一个小时的1分钟。
- 在特殊的时间段内,您在水下绘制的东西可能会移动,并且在合理的时候可能会改变表面和天空(例如,海怪正在吃船,海底形成黑洞等)。