# Can you determine the day your birthday will fall on this year?¶

## Note that January 1, 2019 was a Tuesday¶

In [1]:
from IPython.display import YouTubeVideo

Out[1]:
In [2]:
def calculate_day(month,day):

if month==1: shift=0
elif month==2: shift=3
elif month==3: shift=3
elif month==4: shift=6
elif month==5: shift=1
elif month==6: shift=4
elif month==7: shift=6
elif month==8: shift=2
elif month==9: shift=5
elif month==10: shift=0
elif month==11: shift=3
elif month==12: shift=5
else: return "ERROR"

mytotal = day + shift

remainder = mytotal % 7

if remainder==0: return "Monday"
elif remainder==1: return "Tuesday"
elif remainder==2: return "Wednesday"
elif remainder==3: return "Thursday"
elif remainder==4: return "Friday"
elif remainder==5: return "Saturday"
elif remainder==6: return "Sunday"
else: return "ERROR"

In [5]:
calculate_day(6,15)

Out[5]:
'Saturday'
In [4]:
from __future__ import print_function
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets

interact(calculate_day, month=widgets.IntSlider(min=1, max=12, step=1, value=6), day=widgets.IntSlider(min=1, max=31, step=1, value=15))

Out[4]:
<function __main__.calculate_day(month, day)>

## Here is another solution to this problem.¶

### Why does this solution work?¶

In [19]:
def shorter_solution(month, day):

days_per_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30]
day_of_year = sum(days_per_month[0:month])+day
remainder = day_of_year % 7
daylist = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
return daylist[remainder];

In [20]:
shorter_solution(1,11)

Out[20]:
'Friday'