fork download
  1. breakfast='''7
  2. APPOINT 1 120 30 2 andrey alex
  3. APPOINT 1 130 30 2 alex sergey
  4. APPOINT 1 10 60 2 alex andrey
  5. PRINT 1 alex
  6. PRINT 1 andrey
  7. PRINT 1 sergey
  8. PRINT 2 alex'''
  9. meet.whatisthere(breakfast)
  10. class whatisthere:#Класс проверяет список запросов и обращается к нужным функциям
  11. def __init__(self, requestlist):
  12. meetl = meetlist
  13. for line in requestlist:
  14. pareq=line.split()
  15. if pareq[0]=="APPOINT":
  16.  
  17. date = int(pareq[1])
  18. time = int(pareq[2])
  19. duration = int(pareq[3])
  20. pnumber = int(pareq[4])
  21. plist = pareq[5:]
  22. meetn = meet(date, time, duration, pnumber, plist)
  23.  
  24. meetl.addmit(self, meetn)
  25. elif pareq[0]=="PRINT":
  26. meetl.printmeet(int(pareq[1]), pareq[2])
  27.  
  28.  
  29. class meet:#Класс встречи. Сохраняет параметры
  30. def __init__(self,date,time,duration,pnumber,peoplelist):
  31. meet.date = date
  32. meet.time=time
  33. meet.duration=duration
  34. meet.pnumber=pnumber
  35. meet.peoplelist=peoplelist
  36.  
  37. def check(self,human): # Если на встрече будет этот человек - то выдать инфу о встрече
  38. if not human in meet.peoplelist:
  39. return ""
  40. else:
  41. prnt=str(meet.time)+' '+str(meet.date)
  42. for person in meet.peoplelist:
  43. prnt+=' '+person
  44. return prnt
  45.  
  46.  
  47.  
  48. class meetlist:#Класс списка встреч. Проверяет и добавляет новую встречу в список.
  49.  
  50. def __init__(self):#Создание списка встреч в объекте
  51. meetlist.meets=[]
  52.  
  53. def addmit(self,meet):#Сравнение добавляемой встречи со списком.
  54. print (meetlist.meets)
  55. print (meet)
  56. if not meetlist.meets:
  57. meetlist.meets.append(meet)
  58. return("OK")
  59. for mrel in self.meets:
  60. if meet.date==mrel.date: #Сравниваем даты
  61. if meetlist.comparetime(meet, mrel): #Сравниваем время
  62. listdiff = meetlist.comparepeople(meet,mrel)#Сравниваем людей
  63. if listdiff.count()==0:
  64. meetlist.meets.append(meet)
  65. return("OK")
  66. else:
  67. otp="FAIL "
  68. for p in listdiff:
  69. otp+=' '+p
  70. return otp
  71.  
  72. def comparetime(self, meet1, meet2): #Сравнение двух встреч по времени. Если пересечение - True
  73. if (meet1.time<meet2.time and meet1.time + meet1.duration>meet2.time):
  74. return True
  75. if (meet2.time<meet1.time and meet2.time + meet2.duration>meet1.time):
  76. return True
  77. return True
  78.  
  79.  
  80. def comparepeople(self,meet1,meet2): #Сравнение по людям. Если пересечение - то список.
  81. crosslist=[]
  82. for person in meet1.peoplelist:
  83. for human in meet2.peoplelist:
  84. if person==human:
  85. crosslist.append(human)
  86.  
  87. return crosslist #Возвращаем пересечение двух списков
  88.  
  89.  
  90.  
  91.  
  92. def printmeet(self, date, human): #печать информации о встрече
  93.  
  94. for meet in meetlist.meets():
  95. if (meet.date==date):
  96. meetcheck = meet.check(human)
  97. if meetcheck!='':
  98. print(meetcheck)
  99.  
  100.  
  101.  
Runtime error #stdin #stdout #stderr 0.18s 23460KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "./prog.py", line 9, in <module>
NameError: name 'meet' is not defined