2016-12-04 2 views
0

나는 넥타이Clojure의 순서 해시 맵은

I의 경우에 키 이름 자체를 사용하여,이 키의 값으로 해시 맵을 정렬 할 수 있도록하고 싶습니다 한는 주문 기능이 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)) 

은 현재 내가 할 수 해요 Clojure의 위키에서 촬영 한

(-> "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))