Per la mappa ordinata del clojure, come trovo la voce che ha la chiave più vicina ad un dato valore?Trovare le chiavi più vicine ad un dato valore per le mappe ordinate del clojure
ad es. Supponiamo che io sono
(def my-map (sorted-map
1 A
2 B
5 C))
Vorrei una funzione come
(find-closest my-map 4)
che sarebbe tornato (5, C), dato che è la voce con la chiave più vicina. Potrei fare una ricerca lineare, ma poiché la mappa è ordinata, dovrebbe esserci un modo per trovare questo valore in qualcosa come O (log n).
Non riesco a trovare nulla nell'API che lo rende possibile. Se, ad esempio, potessi chiedere l'entrata della mappa sulla mappa, potrei mettere insieme una funzione come quella che desidero, ma non riesco a trovare nessuna di tali funzioni.
Edit:
Quindi, apparentemente ordinato-mappa è basata su una classe PersistentTreeMap implementato in Java, che è un albero rosso e nero. Quindi sembra proprio che dovrebbe essere fattibile, almeno in linea di principio.
+1. Grazie, è molto utile. –