Untitled
unknown
plain_text
2 years ago
1.4 kB
7
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