Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Next Birthday by yoichi
from datetime import date
from typing import Dict, Tuple
Date = Tuple[int, int, int]
def next_birthday(today: Date, birthdates: Dict[str, Date]) -> Tuple[int, Dict[str, int]]:
_days = None
_age_dict = None
_today = date(*today)
for name, birthday in birthdates.items():
_birthday = date(*birthday)
try:
_next_birthday = date(_today.year, _birthday.month, _birthday.day)
except ValueError:
_next_birthday = date(_today.year, 3, 1)
if _next_birthday < _today:
try:
_next_birthday = date(_today.year+1, _birthday.month, _birthday.day)
except ValueError:
_next_birthday = date(_today.year+1, 3, 1)
if not _age_dict or (_next_birthday - _today).days < _days:
_days = (_next_birthday - _today).days
_age_dict = {name: _next_birthday.year - _birthday.year}
elif (_next_birthday - _today).days == _days:
_age_dict[name] = _next_birthday.year - _birthday.year
return _days, _age_dict
Sept. 27, 2020
Comments: