Вступление:
В северном полушарии (т. Е. В Европе, Северной Америке и т. Д.) Времена года разделены следующим образом:
- весна: март, апрель, май
- лето: июнь, июль, август
- осень: сентябрь, октябрь, ноябрь
- зима: декабрь , Январь Февраль
Однако в южном полушарии (например, в Австралии, Южной Америке и т. Д.) Времена года разделены следующим образом:
- весна: сентябрь, октябрь, ноябрь
- лето: декабрь, январь, февраль
- осень: март, апрель, май
- зима: Июнь Июль Август
Это различие связано с положением солнца относительно экватора, где северное и южное полушария имеют противоположные времена года.
Входные данные:
В этой задаче мы возьмем два входа:
- Один на месяц (
1 <= m <= 12
или0 <= m <= 11
) (примеры и контрольные примеры все 1-проиндексированы). - И одна из пяти «групп-позиций» на широтах Земли (
-2 <= p <= 2
), где-2
находится Антарктика,-1
является южным полушарием, исключая Антарктику,0
находятся ли тропики вблизи экватора,1
является северным полушарием, исключая Арктику, и2
является Арктика.
Хотя в Арктике, Антарктике и Тропиках, конечно, еще есть времена года, ради этого вызова мы скажем, что Арктика и Антарктика находятся в постоянном состоянииWinter
, а Тропики - в постоянном состоянииSummer
.
Здесь наглядное представление этих пяти групп, где -2
находится Северный полярный круг; -1
между тропиком Козерога и Южным полярным кругом; 0
между тропиком козерога и тропиком рака; 1
между Северным полярным кругом и тропиком Рака; и -2
полярный круг.
Источник: COSMOS - Энциклопедия САО по астрономии
Выход:
Один из Spring
, Summer
, Autumn
или Winter
, следуя этим правилам:
- Является ли положение ввода
2
или-2
(Арктика или Антарктика), всегда выводWinter
. - Является ли положение входа
0
(тропики), всегда выводSummer
. - Является ли входная позиция
1
(северное полушарие) выходным значением одного из четырех сезонов на основе входных данных месяца:Spring
(m = [3,5]
);Summer
(m = [6,8]
);Autumn
(m = [9,11]
);Winter
(m = 12 or m = [1,2]
). - Является ли ввод позиции
-1
(южное полушарие) выводом одного из четырех сезонов на основе ввода месяца:Spring
(m = [9,11]
);Summer
(m = 12 or m = [1,2]
);Autumn
(m = [3,5]
);Winter
(m = [6,8]
).
Правила вызова:
- Выход любые четыре различных значения по вашему выбору с указанием
Spring
,Summer
,Autumn
илиWinter
(пожалуйста , укажите , что вы использовали в своем ответе).
-15 байты бонуса , если вы выводитеSpring
,Summer
,Autumn
или вWinter
виде текста (без учета регистра, поэтому можете быть полностью строчными или полностью в верхнем регистре , а также, вместо использованного титульного случае). - Месяц ввода может быть в любом разумном формате. Может быть целым числом с 0 или 1 индексом, Date-object, Month-String и т. Д.
- Вход Позиции всегда будет один из этих возможных пяти входов
-2
,-1
,0
,1
,2
.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте найти как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.
Тестовые случаи:
Position 1-indexed Month Output
-2 8 (August) Winter
-2 12 (December) Winter
-1 3 (March) Autumn
-1 5 (May) Autumn
-1 8 (August) Winter
-1 12 (December) Summer
0 1 (January) Summer
0 7 (July) Summer
1 1 (January) Winter
1 4 (April) Spring
1 7 (July) Summer
1 12 (December) Winter
2 2 (February) Winter
2 9 (September) Winter
Ответы:
Рубин ,
33 2725 байтПопробуйте онлайн!
Возвращаемые значения:
0 -> зима
1 -> весна
2 -> лето
3 -> осень
источник
Python 2 , 29 байт
Попробуйте онлайн!
Подход Ruby от GB , который оказался на несколько байт короче моего:
32 байта
Попробуйте онлайн!
Анонимная функция, которая возвращает времена года в виде чисел от 0 до 3, где они представляют лето, осень, зиму и весну в указанном порядке.
Что касается печати фактических названий сезона:
63 - 15 = 48 байт
Попробуйте онлайн!
Там есть объединенная строка, если кто-то хочет.
источник
C (gcc) ,
7875 (-15 бонус) = 60 байтИспользование 1-го месяца.
Редактировать: переставлены математические операторы и уменьшены.
Попробуйте онлайн!
источник
(++a+m/3)%4
→++a+m/3&3
. Кроме того,a*a
странно, когда именноa
, так что проверкаa&1
должна быть в порядке, нет?05AB1E , 26 - 15 = 11 байт
Использует подход, найденный ГБ
Попробуйте онлайн! или как тестовый набор
источник