Advertisement
dzocesrce

[VI] Class Schedule

Jan 23rd, 2025
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.89 KB | None | 0 0
  1. from constraint import *
  2. def check_valid(cas1,cas2):
  3.     day1, time1 = cas1.split('_')
  4.     day2, time2 = cas2.split('_')
  5.     if day1==day2 and abs(int(time1)-int(time2))<2:
  6.         return False
  7.     return True
  8.  
  9. def check_valid_ml(ml1,ml2):
  10.     day1, time1 = ml1.split('_')
  11.     day2, time2 = ml2.split('_')
  12.     if time1==time2:
  13.         return False
  14.     return True
  15.  
  16. if __name__ == '__main__':
  17.     problem = Problem(BacktrackingSolver())
  18.     casovi_AI = input()
  19.     casovi_ML = input()
  20.     casovi_R = input()
  21.     casovi_BI = input()
  22.  
  23.     AI_predavanja_domain = ["Mon_11", "Mon_12", "Wed_11", "Wed_12", "Fri_11", "Fri_12"]
  24.     ML_predavanja_domain = ["Mon_12", "Mon_13", "Mon_15", "Wed_12", "Wed_13", "Wed_15", "Fri_11", "Fri_12", "Fri_15"]
  25.     R_predavanja_domain = ["Mon_10", "Mon_11", "Mon_12", "Mon_13", "Mon_14", "Mon_15", "Wed_10", "Wed_11", "Wed_12",
  26.                            "Wed_13", "Wed_14", "Wed_15", "Fri_10", "Fri_11", "Fri_12", "Fri_13", "Fri_14", "Fri_15"]
  27.     BI_predavanja_domain = ["Mon_10", "Mon_11", "Wed_10", "Wed_11", "Fri_10", "Fri_11"]
  28.  
  29.     AI_vezbi_domain = ["Tue_10", "Tue_11", "Tue_12", "Tue_13", "Thu_10", "Thu_11", "Thu_12", "Thu_13"]
  30.     ML_vezbi_domain = ["Tue_11", "Tue_13", "Tue_14", "Thu_11", "Thu_13", "Thu_14"]
  31.     BI_vezbi_domain = ["Tue_10", "Tue_11", "Thu_10", "Thu_11"]
  32.  
  33.     # ---Tuka dodadete gi promenlivite--------------------
  34.  
  35.     variables_all = []
  36.     variables_ml= []
  37.  
  38.     for i in range(int(casovi_AI)):
  39.         problem.addVariable(f"AI_cas_{i+1}",AI_predavanja_domain)
  40.         variables_all.append(f"AI_cas_{i+1}")
  41.  
  42.     for i in range(int(casovi_ML)):
  43.         problem.addVariable(f"ML_cas_{i+1}",ML_predavanja_domain)
  44.         variables_all.append(f"ML_cas_{i+1}")
  45.         variables_ml.append(f"ML_cas_{i+1}")
  46.  
  47.     for i in range(int(casovi_R)):
  48.         problem.addVariable(f"R_cas_{i+1}",R_predavanja_domain)
  49.         variables_all.append(f"R_cas_{i+1}")
  50.  
  51.     for i in range(int(casovi_BI)):
  52.         problem.addVariable(f"BI_cas_{i+1}",BI_predavanja_domain)
  53.         variables_all.append(f"BI_cas_{i+1}")
  54.  
  55.     problem.addVariable("AI_vezbi",AI_vezbi_domain)
  56.     variables_all.append("AI_vezbi")
  57.  
  58.     problem.addVariable("ML_vezbi",ML_vezbi_domain)
  59.     variables_all.append("ML_vezbi")
  60.     variables_ml.append("ML_vezbi")
  61.  
  62.     problem.addVariable("BI_vezbi",BI_vezbi_domain)
  63.     variables_all.append("BI_vezbi")
  64.  
  65.  
  66.     # ---Tuka dodadete gi ogranichuvanjata----------------
  67.     # ----------------------------------------------------
  68.  
  69.     for i in range(len(variables_all)):
  70.         for j in range(i+1,len(variables_all)):
  71.             problem.addConstraint(check_valid,(variables_all[i],variables_all[j]))
  72.  
  73.     for i in range(len(variables_ml)):
  74.         for j in range(i+1,len(variables_ml)):
  75.             problem.addConstraint(check_valid_ml,(variables_ml[i],variables_ml[j]))
  76.  
  77.     solution = problem.getSolution()
  78.  
  79.  
  80.     print(solution)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement