Black_Rabbit

inheritance_classes

Nov 15th, 2019
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.65 KB | None | 0 0
  1. n = int(input()) #количество наследований
  2. classes = {} # словарь ключ - класс, значение - список предков класса
  3. class_list = [] #список предков класса наследника
  4.  
  5. def get_parent(pareants, child, classes):
  6.     if pareants in classes[child] or pareants == child:
  7.            return True
  8.     else:
  9.         for i in range(len(classes[child])):
  10.             if __rec__(pareants, classes[child][i], classes):
  11.                   return True
  12.             else:
  13.                 continue
  14.  
  15.  
  16. def __rec__(parents, child, classes):
  17.     if parents in classes[child]:
  18.         return True
  19.     elif len(classes[child]) == 1 and 'object' not in classes[child]:
  20.         child = classes[child][0]
  21.         return __rec__(parents, child, classes)
  22.     elif classes[child] == []:
  23.         return False
  24.     elif len(classes[child]) > 1:
  25.         return get_parent(parents, child, classes)
  26.  
  27.  
  28. for i in range(n):
  29.     input_data_n = input().split()
  30.     len_input_data_n = len(input_data_n)
  31.  
  32.     if len_input_data_n > 2: #если у класса есть предок
  33.         for j in range(len_input_data_n-2):
  34.             class_list.append(input_data_n[2+j])
  35.         classes[input_data_n[0]] = class_list #добавление списка предков класса в словарь
  36.         class_list = []
  37.     else:
  38.         classes[input_data_n[0]] = [] #предок класс Object
  39.  
  40. q = int(input())
  41. for i in range(q):
  42.     input_data_q = input().split()
  43.     if get_parent(input_data_q[0], input_data_q[1], classes):
  44.         print("Yes")
  45.     else:
  46.         print("No")
Add Comment
Please, Sign In to add comment