2014年12月で、2015年はもうすぐ始まります。しかし、誰もがこれを実現しているわけではないようです。
しかし、PPCGの人々が助けに来ます!
入力
プログラムには壁のようなグリッドが与えられ、12月の月の日は11月と1月の日とは異なります。毎週日曜日から始まり、土曜日に終わります。
月内の日はで表されます#
。月の外にある日は、(スペース、ASCIIコード32)で表されます。毎週別々の行にあります。行は改行文字(
\n
)で区切られます。プログラムでは、入力の最後に改行を省略するか含める必要があります。
たとえば、これは2009年12月の入力です。
#####
#######
#######
#######
#####
カレンダーは常に12月です。
仕事
入力を指定すると、カレンダーに関連付けられている年を見つける必要があります。カレンダーが一致する年は複数あるため、2015に最も近い年(2015より前)を返す必要があります(2015自体を除く)。
プログラムは、2015年に近い別の年(2015年より前)と同じ12月のカレンダーレイアウトを持つものを除き、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>
、ユーザー入力を求めるかを選択できます。 - プログラムが無効な入力を受信しないと想定する場合があります。無効な入力には、年が存在しないカレンダーレイアウトが含まれています。
- 最短のコード(バイト数、任意の言語)が優先されます。
非標準のコマンドライン引数(スクリプトの実行に通常必要とされない引数)は、合計文字数にカウントされます。
プログラムで禁止されていること:
- 外部リソースに依存します。
- 特定のファイル名を持つことに依存します。
- 必要な出力以外のものを出力します。
- 実行に非常に長い時間がかかります。プログラムが平均的なホームユーザーのコンピューターで1分以上実行される場合、それは無効です。
- このチャレンジが投稿される前に、公に入手可能なコンパイラー/インタープリターが存在しなかったプログラミング言語でプログラムを記述してはなりません。
例
入力:
#####
#######
#######
#######
#####
出力:
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!