2014年12月,2015年几乎已经开始。但是,似乎并非每个人都意识到这一点。
但是PPCG的人们来救助!
输入项
您的程序将获得一个像墙一样的网格,其中12月一个月的日子与11月和1月的日子有所不同。每个星期从星期日开始,到星期六结束。
一个月内的天以表示#
。月份以外的日子用(空格,ASCII码32)表示。每周都有单独的一行。行之间用换行符(
\n
)分隔。您的程序可能要求省略或在输入末尾添加换行符。
例如,这是2009年12月的输入:
#####
#######
#######
#######
#####
日历始终是十二月。
任务
有了输入,您必须找到与日历关联的年份。由于日历与多个年份匹配,因此您必须返回最接近2015年的年份(2015年之前)。(2015年本身除外)。
您的程序必须在<2015年的任何年份中产生正确的输出,但那些12月的日历布局等于接近2015年的另一年(2015年前)的日历输出除外。
如果年份<2014,则还必须计算与2014年的年份差值。例如,对于2012年,差值为2
。
输出量
程序的输出必须为:
- 文本:(
Your calendar is for <year>.
注意:由于最初被拼写为“日历”,因此我也将接受该拼写。) - 后跟换行符(
\n
或\r\n
)。 - 后跟文字:
It's almost 2015.
- 如果年份<2014,则必须在其后加上文本:
You're <difference> years behind.
必须在单独的一行上。 - 后跟换行符(
\n
或\r\n
)。 - 后跟文字:
Go buy a new calendar!
- (可选)后跟换行符(
\n
或\r\n
)。
规则
- 您可以选择是要接收日历作为命令行参数(例如
yourprogram.exe <calendar>
)还是提示用户输入。 - 您可能会认为您的程序不会收到无效的输入。无效的输入包括没有年份的日历布局。
- 最短的代码(以任何语言表示的字节数)为准。
任何非标准的命令行参数(运行脚本通常不需要的参数)都计入总字符数。
您的程序不得执行的操作:
- 取决于任何外部资源。
- 取决于具有特定的文件名。
- 输出所需输出以外的任何内容。
- 需要非常长的时间才能运行。如果您的程序在普通家庭用户的计算机上运行一分钟以上,则该程序无效。
- 在发布此挑战之前,不得使用没有公开可用的编译器/解释器的编程语言来编写您的程序。
例子
输入:
#####
#######
#######
#######
#####
输出:
Your calendar is for 2009.
It's almost 2015.
You're 5 years behind.
Go buy a new calendar!
输入:
######
#######
#######
#######
####
输出:
Your calendar is for 2014.
It's almost 2015.
Go buy a new calendar!
输入:
#
#######
#######
#######
#######
##
输出:
Your calendar is for 2012.
It's almost 2015.
You're 2 years behind.
Go buy a new calendar!