2016-12-04 156 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))