Для сортированной карты clojure, как найти запись, имеющую ключ, ближайший к заданному значению?Поиск ключей, ближайших к заданному значению для сортированных карт clojure
например. Предположим, у меня есть
(def my-map (sorted-map
1 A
2 B
5 C))
Я хотел бы функцию, как
(find-closest my-map 4)
которые возвращают бы (5, C), так как это запись с ближайшим ключом. Я мог бы выполнять линейный поиск, но, поскольку карта сортируется, должен быть способ найти это значение в чем-то вроде O (log n).
Я не могу найти что-либо в API, что делает это возможным. Если, например, я мог бы запросить i-ю запись на карте, я мог бы сколотить функцию, подобную той, которую я хочу, но я не могу найти такую функцию.
Edit:
Таким образом, очевидно отсортировано-карта основана на классе PersistentTreeMap реализован в Java, который является красным и черным деревом. Так что действительно кажется, что это должно быть выполнимо, по крайней мере, в принципе.
+1. Спасибо, это очень полезно. –