Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Convert in less than 30 lines
Question: Convert following into the latter data structure in less than 30 lines:
A, B, C
A, C, E
E, F, D
D, A, J
E, D, J
A, B, 1 (frequency)
A, C, 2
A, D, 1
A, E, 1
A, J, 1
B, C, 1
C, E, 1
D, E, 2
D, F, 1
D, J, 2
E, F, 1
E, J, 1
(def l [["A" "B" "C"] ["A" "C" "E"] ["D" "A" "J"] ["E" "D" "J"] ["E" "F" "D"]])
(defn combos [x]
(loop [s x c []]
(if (empty? s)
(recur (rest s)
(concat c (map #(conj [(first s)] %) (rest s)))))))
(map #(list (first %) (count (last %)))
(sort-by first
(group-by identity
(reduce concat (map combos l)))))
((["A" "B"] 1) (["A" "C"] 2) (["A" "E"] 1) (["A" "J"] 1) (["B" "C"] 1) (["C" "E"] 1) (["D" "A"] 1) (["D" "J"] 2) (["E" "D"] 2) (["E" "F"] 1) (["E" "J"] 1) (["F" "D"] 1))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.