Ваша задача предельно проста. Если в качестве входных данных указан год, выведите все месяцы этого года, которые будут содержать пятнадцатое число по григорианскому календарю. Обратите внимание, что хотя григорианский календарь не был введен до 1582 года, для простоты мы будем делать вид, что он используется с 0001 года нашей эры.
правила
Полные программы или функции разрешены.
Вы можете принимать входные данные как аргументы функции, из STDIN или как аргументы командной строки.
Вам не разрешено использовать любые встроенные дату и время.
Вы можете смело предположить, что ввод будет действительным годом. Если входное значение меньше 1, недопустимое целое число или больше, чем тип чисел собственного языка в вашем языке, вам не нужно обрабатывать это, и вы получите неопределенное поведение.
Выходные данные могут быть числами, на английском языке или в любом другом удобочитаемом формате, если вы укажете стандарт.
Убедитесь, что вы учитываете високосные годы. И помните, високосные годы не случаются каждые 4 года!
подсказки
Поскольку есть много разных способов сделать это, я не хочу рассказывать вам, как это сделать. Однако, может быть непонятно, с чего начать, поэтому вот пара надежных способов определения дня недели по дате.
Укажите начальную дату с известным днем недели, например, понедельник, 1 января, 0001, найдите расстояние между этими двумя днями и возьмите это число мод 7.
Образец ввода-вывода
2016 --> May
0001 --> 4, 7
1997 --> Jun
1337 --> 09, 12
123456789 --> January, October
Как обычно, это код-гольф, поэтому применяются стандартные лазейки, и выигрывает самый короткий ответ.
0001 --> 5
? Согласно этой странице (и моему коду) это должны быть апрель и июль.