Introdução:
No hemisfério norte (Europa, América do Norte etc.), as estações são divididas assim:
- Primavera: março, abril, maio
- verão: junho, julho, agosto
- outono: setembro, outubro, novembro
- inverno: dezembro , Janeiro fevereiro
No hemisfério sul, no entanto (Austrália, América do Sul etc.), as estações são divididas assim:
- Primavera: setembro, outubro, novembro
- verão: dezembro, janeiro, fevereiro
- outono: março, abril, maio
- inverno: Junho julho Agosto
Essa diferença se deve à posição do sol em relação ao equador, onde os hemisférios norte e sul têm estações opostas.
Entrada:
Neste desafio, tomaremos duas entradas:
- Um para o mês (
1 <= m <= 12
ou0 <= m <= 11
) (exemplos e casos de teste são todos com 1 índice). - E um para os cinco "grupos de posições" nas latitudes da Terra (
-2 <= p <= 2
), onde-2
é o Antártico,-1
é o hemisfério sul excluindo o Antártico,0
são os trópicos nas proximidades do equador,1
é o hemisfério norte excluindo o Ártico e2
é o Ártico.
Embora o Ártico, o Antártico e os Trópicos, claro, ainda tenham estações, para o bem desse desafio, diremos que o Ártico e o Antártico estão em um estado constante deWinter
, e os Trópicos estão em um estado constante deSummer
.
Aqui está uma representação visual desses cinco grupos, onde -2
fica o Círculo Antártico; -1
entre o Trópico de Capricórnio e o Círculo Antártico; 0
entre o Trópico de Capricórnio e o Trópico de Câncer; 1
entre o Círculo Polar Ártico e o Trópico de Câncer; e -2
o círculo ártico.
Fonte: COSMOS - A Enciclopédia SAO de Astronomia
Resultado:
Um dos Spring
, Summer
, Autumn
, ou Winter
, seguindo estas regras:
- É a posição de entrada
2
ou-2
(Ártico ou Antártico), sempre saídaWinter
. - É a posição de entrada
0
(trópicos), sempre saídaSummer
. - É a entrada de posição
1
(hemisfério norte), produz uma das quatro estações do ano com base na entrada do mês:Spring
(m = [3,5]
);Summer
(m = [6,8]
);Autumn
(m = [9,11]
);Winter
(m = 12 or m = [1,2]
) - É a entrada de posição
-1
(hemisfério sul), produz uma das quatro estações do ano com base na entrada do mês:Spring
(m = [9,11]
);Summer
(m = 12 or m = [1,2]
);Autumn
(m = [3,5]
);Winter
(m = [6,8]
)
Regras do desafio:
- Saída de qualquer quatro valores distintos de sua escolha, indicando
Spring
,Summer
,Autumn
, ouWinter
(por favor, indicar o que você já usou em sua resposta).
-15 bytes bônus se você saídaSpring
,Summer
,Autumn
, ouWinter
como texto (maiúsculas e minúsculas, por isso pode ser totalmente minúsculas ou totalmente em maiúsculas, bem como, em vez do título de caso de uso). - A entrada do mês pode estar em qualquer formato razoável. Pode ser um número inteiro com índice 0 ou 1, objeto Data, String mês, etc.
- Entrada de posição será sempre uma dessas possíveis cinco entradas
-2
,-1
,0
,1
,2
.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, adicione uma explicação, se necessário.
Casos de teste:
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
Respostas:
Ruby ,
33 2725 bytesExperimente online!
Os valores de retorno são:
0 -> inverno
1 -> primavera
2 -> verão
3 -> outono
fonte
Python 2 , 29 bytes
Experimente online!
Uma porta da abordagem Ruby da GB , que acabou sendo alguns bytes menor que a minha:
32 bytes
Experimente online!
Uma função anônima que retorna as estações como os números de 0 a 3, onde elas representam verão, outono, inverno e primavera nessa ordem.
Quanto à impressão dos nomes reais da estação:
63 - 15 = 48 bytes
Experimente online!
Existe a sequência combinada, se alguém quiser.
fonte
C (gcc) ,
7875 (bônus -15) = 60 bytesUsando meses baseados em 1.
Edit: Operadores matemáticos reorganizados e reduzidos.
Experimente online!
fonte
(++a+m/3)%4
→++a+m/3&3
. Além disso,a*a
é estranho exatamente quandoa
, então a verificaçãoa&1
deve ser boa, não?05AB1E , 26 - 15 = 11 bytes
Usa a abordagem encontrada pelo GB
Experimente online! ou como um conjunto de testes
fonte