2016-12-04 101 views
0

我希望能夠通過價值它的鍵進行排序的哈希地圖,位於並列Clojure的順序哈希表

我的事件中使用的鍵名本身從Clojure的維基https://clojuredocs.org/clojure.core/sorted-map-by#example-542692d5c026201cdc327094

(defn order-map [target] 
    (into (sorted-map-by (fn [key1 key2] 
         (compare [(target key2) key2] 
            [(target key1) key1]))) target)) 

目前我能做到邁出了排序功能

(-> "notarealroom" frequencies order-map) 

其輸出

{\o 3, \r 2, \a 2, \t 1, \n 1, \m 1, \l 1, \e 1} 

但我希望能夠使用相同的值排序這些鍵,例如, \r\a按字母順序給像下面這樣...

{\o 3, \a 2, \r 2, \e 1, \l 1, \m 1, \n 1, \t 1} 

我不能確定如何修改比較函數來處理這個搶七的情況

+1

你在做代碼的問世嗎?我也解決了這個問題,但不需要排序映射。僅對頻率結果進行排序就足夠了。如果您想要我的完整解決方案,請瀏覽https://github.com/borkdude/aoc2016。 –

+0

你猜對了,我只是想改善我的基本Clojure。你的解決方案超級整潔!非常感謝指針 –

回答

2

你是幾乎沒有。以下應該做正確的事情:

(defn order-map [target] 
    (into (sorted-map-by (fn [key1 key2] 
         (compare [(target key2) key1] 
            [(target key1) key2]))) target))