Para el mapa ordenado de clojure, ¿cómo puedo encontrar la entrada que tiene la clave más cercana a un valor dado?Encontrar las teclas más cercanas a un valor dado para los mapas clasificados de Clojure
p. Ej. Supongamos que tengo
(def my-map (sorted-map
1 A
2 B
5 C))
me gustaría una función como
(find-closest my-map 4)
que volver (5, C), ya que es la entrada con la tecla más cercano. Podría hacer una búsqueda lineal, pero dado que el mapa está ordenado, debería haber una manera de encontrar este valor en algo como O (log n).
No puedo encontrar nada en la API que lo haga posible. Si, por ejemplo, pudiera solicitar la entrada número i en el mapa, podría improvisar una función como la que yo quiero, pero no puedo encontrar ninguna de esas funciones.
Editar:
Por tanto, aparentemente ordenados-mapa se basa en una clase PersistentTreeMap implementado en Java, que es un árbol de color rojo y negro. Así que esto realmente parece que debería ser factible, al menos en principio.
+1. Gracias, eso es muy útil. –