Это декабрь 2014 года, а 2015 год почти начался. Однако, похоже, не все это осознали.
Но люди PPCG приходят на помощь!
вход
Ваша программа имеет сетку, похожую на сетку, где дни в декабре месяце выглядят иначе, чем в ноябре и январе. Каждая неделя начинается с воскресенья и заканчивается субботой.
Дни в месяце представлены как #
. Дни, выходящие за пределы месяца, обозначаются как (пробел, код ASCII 32). Каждая неделя на отдельной строке. Строки разделяются символом новой строки (
\n
). Ваша программа может потребовать пропуска или включения новой строки в конце ввода.
Например, это входные данные за декабрь 2009 года:
#####
#######
#######
#######
#####
Календарь всегда месяц декабрь.
задача
Учитывая данные, вы должны найти год, связанный с календарем. Поскольку существует несколько лет, для которых совпадает календарь, необходимо указать год (до 2015 года), ближайший к 2015 году. (За исключением самого 2015 года.)
Ваша программа должна производить правильные выходные данные для любого года <2015, за исключением тех, которые имеют календарный план на декабрь, который соответствует календарному плану другого года (до 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!
источник
Ответы:
CJam, 126 байт
источник
Python 3, 178 байт
Простая справочная таблица, основанная на расположении первого
#
.Expanded:
источник
Perl - 187
источник
Perl 5: 137
143Предыдущий подход:
Календарь на стандартном вводе (конечно, важна только первая строка)
источник
C # 235
уменьшенная:
Ungolfed
Ну, язык многословен :)
источник
Program
вP
. Это должно спасти вас некоторых персонажей :)y
вычисления. Если вы индексируете строку, вы можете сохранить синтаксис, необходимый для описания массива (т. Е.var y = "1054382"[index]-48
(0
ASCII 48)).y
также могут быть включены вz
расчет для дальнейшей экономии.C #,
384,363325 байтC # Time, пожалуйста, скажите мне, если я пропустил одно из правил и т. Д.
вход
Вывод
Вход 2
Выход 2
Редактировать: обновлено, удалось удалить некоторые байты
источник
Java, 243 байта
Это многословный язык :-)
Unminified
источник
JavaScript (ES6),
199170 байтЯ еще не привык писать ES6, поэтому любые советы будут оценены:
Таблица поиска, 170 байт
Оригинал, 199 байт
Unminified
JavaScript (ES5),
212182 байтаЯ также включил мою оригинальную версию ниже
Массив поиска, 182 байта
Unminified
Оригинал, 212 байт
Unminified
источник
CoffeeScript,
211177 байтАналогично моему PHP-ответу, но у CoffeeScript нет
do-while
циклов и нет короткого троичного оператора:Unminifed
Укорочено с помощью справочной таблицы:
источник
PHP,
215181 байтТаблица поиска, 181 байт
Из-за короткого синтаксиса массива, работает только на PHP 5.4+:
Unminified
Оригинал, 215 байт
Работает с большинством (если не со всеми) версиями PHP 5:
Unminified
источник
Руби, 174
источник
PHP, 145 байт
два разрыва строки за закрывающим тегом, потому что PHP будет игнорировать первый
принимает входные данные из аргумента командной строки;
требуется PHP 5.6 (выпущен 18 декабря 2014 г.) или более поздней версии для индексации строкового литерала.
источник
SmileBASIC, 159 байт
источник
C # (интерактивный компилятор Visual C #) ,
178175172 байтаПопробуйте онлайн!
источник