Escriba un programa que tome una fecha de nacimiento (mes y día del mes) como entrada y haga salir el signo, elemento y calidad correspondientes del zodiaco occidental . Para los propósitos de este desafío, estos se definen exactamente como en la tabla en la página de 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
Reglas
- El signo, el elemento y la calidad se calcularán a partir de la fecha de entrada exactamente de acuerdo con la tabla de wikipedia.
- Estoy dando algo de libertad sobre el formato de fecha de entrada (ver la sección de Entrada a continuación). Debe indicar claramente en su respuesta qué formato está utilizando.
- Si se proporciona una fecha no válida (fecha no analizable, o mes o día del mes fuera de rango), el programa se cerrará con el mensaje
Invalid date
. - El programa debe manejar correctamente los años bisiestos. es decir, si el 29 de febrero es la entrada, la salida debe ser correctamente
Pisces, Water, Mutable
. - Las bibliotecas de fechas / API de su idioma están permitidas, pero cualquier API que calcule específicamente los signos del zodiaco está prohibida.
- "Lagunas" estándar que ya no son divertidas
- Este es el código de golf , por lo que gana la respuesta más corta en bytes.
Entrada
- El programa puede leer la fecha de entrada de STDIN, línea de comandos, variables de entorno o cualquier método que sea conveniente para el idioma que elija.
- Este no es principalmente un ejercicio de análisis de fechas, por lo que la cadena de entrada puede proporcionarse en el formato que elija, siempre que consista solo en componentes de mes y día del mes y no en otros valores (como año u hora) . Por ejemplo,
Jul 24
o24th of July
o7/24
o24/07
o cualquier formato que sea conveniente. Si se ingresa una entrada que no coincide con su elección de formato de entrada, seInvalid date
debe arrojar el error.
Salida
- El programa saldrá a STDOUT, cuadro de diálogo o cualquier método de visualización que sea conveniente para el idioma que elija.
- El formato de salida será el signo, el elemento y la calidad separados por una coma y un espacio:
Sign, Element, Quality
Ejemplos
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
. Ej . Feb 5 -> 36
) Un formato de entrada válido?