Advertisement
Guest User

Untitled

a guest
Feb 26th, 2024
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.89 KB | None | 0 0
  1. from datetime import datetime, timedelta
  2.  
  3. def get_name1_days(date):
  4.     # Дни недели фиксированы, не зависят от даты
  5.     return ["Monday", "Thursday", "Friday"]
  6.  
  7. def get_name2_days(week_number, date):
  8.     days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
  9.     start_index = 1 + ((week_number - 1) % 7)
  10.     return [days[(start_index + i) % 7] for i in range(3)]
  11.  
  12. def get_name3_days(week_number, date):
  13.     cycles = [
  14.         ["Wednesday", "Thursday", "Sunday"],
  15.         ["Monday", "Thursday", "Friday"],
  16.         ["Monday", "Tuesday", "Friday", "Saturday"],
  17.     ]
  18.     return cycles[(week_number - 1) % 3]
  19.  
  20. def find_common_days(start_date, weeks=12):
  21.     week_days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
  22.     start_datetime = datetime.strptime(start_date, "%Y-%m-%d")
  23.  
  24.     for week in range(1, weeks + 1):
  25.         week_start = start_datetime + timedelta(weeks=week-1)
  26.         days_dict = {day: (week_start + timedelta(days=i)) for i, day in enumerate(week_days)}
  27.  
  28.         days_name1 = set(get_name1_days(week_start))
  29.         days_name2 = set(get_name2_days(week, week_start))
  30.         days_name3 = set(get_name3_days(week, week_start))
  31.  
  32.         common_days = days_name1.intersection(days_name2).intersection(days_name3)
  33.  
  34.         if common_days:
  35.             formatted_common_days = ', '.join(sorted(common_days, key=week_days.index))
  36.             dates = [days_dict[day].strftime("%Y-%m-%d") for day in sorted(common_days, key=week_days.index)]
  37.             print(f"Week {week} ({week_start.strftime('%Y-%m-%d')} to {(week_start + timedelta(days=6)).strftime('%Y-%m-%d')}): {formatted_common_days} - {'; '.join(dates)}")
  38.         else:
  39.             print(f"Week {week}: No common days.")
  40.  
  41. # Желаемые даты и недели
  42. start_date = "2024-02-26"
  43. find_common_days(start_date)
  44.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement