Задача:
Рассмотрим набор значений, например, 0, 1, 2
, теперь представьте два из этих наборов и биективную связь между ними.
Как я могу реализовать это в Swift, инкапсулированном в структуру данных?
Разъяснение и примеры:
Пример отображения может выглядеть так:
0 <-> 1
1 <-> 2
2 <-> 0
Классическая двунаправленная хэш-карта не подходит для этого варианта использования, так как значения с обеих сторон не уникальны.
Структура данных должна позволять запрашивать с обеих сторон:
let ds = DS(...)
let ds.right(from: 1) // 2
let ds.left(from: 0) // 2
Какой самый простой способ реализации такой структуры данных?На каких существующих типах данных я могу основывать свою реализацию?
ОБНОВЛЕНИЕ:
Что означает «значения с обеих сторон не являются уникальными» Значения на левой стороне уникальны для этой стороны, а также значения на правой стороне, однако, если значение присутствует на одной стороне, оно всегда будет присутствовать на другой.значения не являются уникальными.
Можете ли вы привести пример с неуникальными значениями и ожидаемыми результатами справа (от :) и слева (от :) в случае неединственности?
Для пояснения, все значения, которые имеет левая сторона, равны 0,1,2
. Правая сторона также имеет 0,1,2
.
примеры запросов:
ds.rightFrom(left: 2) -> 0
ds.rightFrom(left: 0) -> 1
ds.leftFrom(right: 0) -> 2
ds.leftFrom(right: 1) -> 0