Facebook
From Robi Rahman, 3 Years ago, written in Python.
Embed
Download Paste or View Raw
Hits: 74
  1. year = int(input("Enter the year: "))
  2. month = int(input("Enter the month: "))
  3. day = int(input("Enter the day: "))
  4. # need to raise valueerror if year < 1
  5.  
  6. def anchor(year) :
  7.     rem = (year//100)%4
  8.     if rem == 0:
  9.         return 2
  10.     elif rem == 1:
  11.         return 0
  12.     elif rem == 2:
  13.         return 5
  14.     elif rem == 3:
  15.         return 3
  16.  
  17. def calc_leap(year) :
  18.     if year / 4 != year // 4 :
  19.         return 0
  20.     elif year / 100 != year // 100 :
  21.         return 1
  22.     elif year / 400 != year // 400 :
  23.         return 0
  24.     else :
  25.         return 1
  26.  
  27. leap = calc_leap(year)
  28.  
  29. def calc_doomsday(year) :
  30.     yy = year - 100 * (year // 100)
  31.     return (anchor(year) + yy // 12 + yy % 12 + (yy % 12) // 4) % 7
  32.  
  33. doom = calc_doomsday(year)
  34.  
  35. def calc_weekday(year, month, day) :
  36.     # calculate forward/backward from nearest doomsday
  37.     if month == 1:
  38.         return (day - 3 - leap + doom) % 7
  39.     elif month == 2:
  40.         return (day - 28 - leap + doom) % 7
  41.     elif month == 3:
  42.         return (day - 0 + doom) % 7
  43.     elif month == 4:
  44.         return (day - 4 + doom) % 7
  45.     elif month == 5:
  46.         return (day - 9 + doom) % 7
  47.     elif month == 6:
  48.         return (day - 6 + doom) % 7
  49.     elif month == 7:
  50.         return (day - 11 + doom) % 7
  51.     elif month == 8:
  52.         return (day - 8 + doom) % 7
  53.     elif month == 9:
  54.         return (day - 5 + doom) % 7
  55.     elif month == 10:
  56.         return (day - 10 + doom) % 7
  57.     elif month == 11:
  58.         return (day - 7 + doom) % 7
  59.     elif month == 12:
  60.         return (day - 12 + doom) % 7
  61.  
  62. def print_weekday(x) :
  63.     if x == 0:
  64.         print("Sunday")
  65.     elif x == 1:
  66.         print("Monday")
  67.     elif x == 2:
  68.         print("Tuesday")
  69.     elif x == 3:
  70.         print("Wednesday")
  71.     elif x == 4:
  72.         print("Thursday")
  73.     elif x == 5:
  74.         print("Friday")
  75.     elif x == 6:
  76.         print("Saturday")
  77.  
  78. print_weekday(calc_weekday(year, month, day))