Đó là tháng 12 năm 2014, và 2015 đã gần như bắt đầu. Tuy nhiên, có vẻ như không phải ai cũng nhận ra điều này.
Nhưng người dân PPCG đến giải cứu!
Đầu vào
Chương trình của bạn được cung cấp một lưới giống như một bức tường, trong đó những ngày trong tháng 12 trông khác với những ngày trong tháng 11 và tháng 1. Mỗi tuần bắt đầu với Chủ nhật và kết thúc với Thứ Bảy.
Ngày trong tháng được đại diện bởi a #
. Những ngày nằm ngoài tháng được biểu thị bằng (dấu cách, mã ASCII 32). Mỗi tuần là trên một dòng riêng biệt. Các dòng được phân tách bằng một ký tự dòng mới (
\n
). Chương trình của bạn có thể yêu cầu thông báo hoặc đưa vào một dòng mới ở cuối đầu vào.
Ví dụ: đây là đầu vào cho tháng 12 năm 2009:
#####
#######
#######
#######
#####
Lịch luôn luôn là của tháng mười hai.
Bài tập
Đưa ra đầu vào, bạn phải tìm năm liên quan đến lịch. Vì có nhiều năm mà lịch khớp với nhau, bạn phải trả lại năm (trước năm 2015) gần nhất với năm 2015. (Không bao gồm năm 2015.)
Chương trình của bạn phải tạo ra đầu ra chính xác cho bất kỳ năm nào <2015, ngoại trừ những chương trình có bố cục lịch cho tháng 12 bằng với năm khác (trước năm 2015) gần hơn với năm 2015.
Nếu năm <2014, bạn cũng phải tính chênh lệch của năm 2014. Ví dụ: năm 2012 chênh lệch là 2
.
Đầu ra
Đầu ra của chương trình của bạn phải là:
- Văn bản:
Your calendar is for <year>.
(Lưu ý: vì từ này ban đầu được đánh vần là cal calender, tôi cũng sẽ chấp nhận chính tả đó.) - Tiếp theo là một dòng mới (
\n
hoặc\r\n
). - Tiếp theo là văn bản:
It's almost 2015.
- Nếu năm là <2014, điều này phải được theo sau bởi văn bản:
You're <difference> years behind.
Điều này phải nằm trên một dòng riêng biệt. - Tiếp theo là một dòng mới (
\n
hoặc\r\n
). - Tiếp theo là văn bản:
Go buy a new calendar!
- Tùy chọn theo sau bởi một dòng mới (
\n
hoặc\r\n
).
Quy tắc
- Bạn có thể chọn xem bạn muốn nhận lịch dưới dạng đối số dòng lệnh (ví dụ
yourprogram.exe <calendar>
) hoặc lời nhắc cho đầu vào của người dùng. - Bạn có thể cho rằng chương trình của bạn sẽ không nhận được đầu vào không hợp lệ. Đầu vào không hợp lệ bao gồm bố trí lịch mà không tồn tại năm.
- Mã ngắn nhất (tính bằng byte, bằng bất kỳ ngôn ngữ nào) sẽ thắng.
Bất kỳ đối số dòng lệnh không chuẩn nào (đối số thường không được yêu cầu để chạy tập lệnh) đều được tính vào tổng số ký tự.
Những gì chương trình của bạn không được làm:
- Phụ thuộc vào bất kỳ nguồn lực bên ngoài.
- Phụ thuộc vào việc có một tên tập tin cụ thể.
- Đầu ra bất cứ điều gì khác ngoài đầu ra cần thiết.
- Mất nhiều thời gian để chạy. Nếu chương trình của bạn chạy hơn một phút trên máy tính của một người dùng gia đình trung bình, thì nó không hợp lệ.
- Chương trình của bạn không được viết bằng ngôn ngữ lập trình mà không tồn tại trình biên dịch / trình thông dịch có sẵn công khai trước khi thử thách này được đăng.
Ví dụ
Đầu vào:
#####
#######
#######
#######
#####
Đầu ra:
Your calendar is for 2009.
It's almost 2015.
You're 5 years behind.
Go buy a new calendar!
Đầu vào:
######
#######
#######
#######
####
Đầu ra:
Your calendar is for 2014.
It's almost 2015.
Go buy a new calendar!
Đầu vào:
#
#######
#######
#######
#######
##
Đầu ra:
Your calendar is for 2012.
It's almost 2015.
You're 2 years behind.
Go buy a new calendar!