Files
deep_go/homework/04.md
2025-05-23 07:54:04 +03:00

36 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Домашнее задание №4
📗 В домашнем задании нужно реализовать упорядоченный словарь.
Идея упорядоченного словаря заключается в том, что он будет реализован на основе бинарного дерева поиска (BST). Дерево будет строиться только по ключам элементов, значения элементов при построении дерева не учитываются. Элементы с одинаковыми ключами в упорядоченном словаре хранить нельзя.
Поподробнее с бинарными деревьями поиска можно познакомиться здесь.
API для упорядоченного словаря будет выглядеть следующим образом:
```go
type OrderedMap struct { ... }
func NewOrderedMap() OrderedMap // создать упорядоченный словарь
func (m *OrderedMap) Insert(key, value int) // добавить элемент в словарь
func (m *OrderedMap) Erase(key int) // удалить элемент из словари
func (m *OrderedMap) Contains(key int) bool // проверить существование элемента в словаре
func (m *OrderedMap) Size() int // получить количество элементов в словаре
func (m *OrderedMap) ForEach(action func(int, int)) // применить функцию к каждому элементу словаря от меньшего к большему
```
📌 Для выполнения домашнего задания подготовлен шаблон кода и основные тесты, которую помогут проверить корректность реализации конвертации. Шаблона доступен по ссылке.
### Задание со звездочкой
Выполнять необязательно, но если вы уже знакомы c дженериками в Go, то попробуйте реализовать обобщенную OrderedMap, которая сможет работать с любыми comparable типами данных в качестве ключей и абсолютно любыми типами данных в качестве значений.