Escreva um programa que use uma data de nascimento (mês e dia do mês) como entrada e produz o sinal, elemento e qualidade correspondentes do zodíaco ocidental . Para os propósitos deste desafio, eles são definidos exatamente como na tabela na página da wikipedia vinculada:
Sign Date Range Element Quality
Aries March 21 to April 19 Fire Cardinal
Taurus April 20 to May 20 Earth Fixed
Gemini May 21 to June 21 Air Mutable
Cancer June 22 to July 22 Water Cardinal
Leo July 23 to August 22 Fire Fixed
Virgo August 23 to September 22 Earth Mutable
Libra September 23 to October 23 Air Cardinal
Scorpio October 24 to November 20 Water Fixed
Sagittarius November 21 to December 22 Fire Mutable
Capricorn December 23 to January 20 Earth Cardinal
Aquarius January 21 to February 21 Air Fixed
Pisces February 22 to March 20 Water Mutable
Regras
- O sinal, elemento e qualidade serão calculados a partir da data de entrada exatamente de acordo com a tabela da Wikipedia.
- Estou dando liberdade ao formato da data de entrada (consulte a seção Entrada abaixo). Você deve indicar claramente em sua resposta qual formato está usando.
- Se uma data inválida for fornecida (data não analisável ou mês ou dia do mês fora do intervalo), o programa sairá com a mensagem
Invalid date
. - O programa deve lidar corretamente com os anos bissextos. ou seja, se 29 de fevereiro é a entrada, a saída deve ser corretamente
Pisces, Water, Mutable
. - As bibliotecas / APIs de data do seu idioma são permitidas, mas qualquer API que calcule especificamente os signos do zodíaco é proibida.
- “Brechas” padrão que não são mais engraçadas
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Entrada
- O programa pode ler a data de entrada no STDIN, na linha de comando, nas variáveis de ambiente ou em qualquer método conveniente para o seu idioma de escolha.
- Isso não é principalmente um exercício de análise de cadeia de dados; portanto, a sequência de entrada pode ser fornecida no formato que você escolher, desde que consista apenas em componentes de mês e dia do mês e não em outros valores (como ano ou hora) . Por exemplo,
Jul 24
ou24th of July
ou7/24
ou24/07
ou qualquer formato que seja conveniente. Se a entrada que não corresponde à sua escolha de formato de entrada for inserida, oInvalid date
erro deverá ser gerado.
Resultado
- O programa exibirá STDOUT, caixa de diálogo ou qualquer outro método de exibição conveniente para o seu idioma de escolha.
- O formato de saída será o sinal, o elemento e a qualidade separados por vírgula e espaço:
Sign, Element, Quality
Exemplos
Input Output
1/1 Capricorn, Earth, Cardinal
2/29 Pisces, Water, Mutable
7/24 Leo, Fire, Fixed
13/1 Invalid date
2/31 Invalid date
-1/-1 Invalid date
1st of Golfember Invalid date
Jan 21 -> 21
, Feb 5 -> 36
) é um formato de entrada válido?