Untitled
unknown
plain_text
2 years ago
1.4 kB
4
Indexable
class MemberCard: def __init__(self, name, age, cats, cat_names): self.name = name self.age = age self.cats = cats self.cat_names = cat_names class HashTable: def __init__(self): self.index = [] for i in range(20): self.index.append([]) def get_hash(self, m: MemberCard, i): h = (m.age * m.cats + sum([len(m.cat_names[j]) for j in range(m.cats)])) % 20 return h def add(self, m, i): hash_value = self.get_hash(m, i) while self.index[hash_value]: # Проверяем, занята ли текущая ячейка hash_value = (hash_value + 1) % len(self.index) # Переходим к следующей ячейке self.index[hash_value] = m # Добавляем новый элемент в свободную ячейку if __name__ == "__main__": n = int(input()) h = HashTable() for i in range(n): inp = input().split() m = MemberCard(inp[0], int(inp[1]), int(inp[2]), inp[3:]) h.add(m, i) # Когда вставка будет завершена, выведите через "\n" строки вида "<индекс в хэш-таблице> <имя члена клуба> <возраст члена клуба>". for i in range(len(h.index)): if h.index[i]: print(i, h.index[i].name, h.index[i].age)
Editor is loading...
Leave a Comment