【发布时间】:2020-12-27 18:28:37
【问题描述】:
我目前正在执行一项任务,为简单的“压缩/编码”算法提出解决方案。
目标是压缩字符串中后续相同的字母:"AABBBCCCC" --> "2A3B4C"
虽然这个解决方案有几种(并且可能更优雅)的方法,但我在尝试派生一个单一的 reduce 函数来计算相同字母的后续出现并构建输出数组时遇到了困难:
(reduce (fn [[a counter seq] b]
(if (= a b) [b (inc counter) seq] ([b 0 (conj(conj seq b )counter)] )))
[ "" 0 [] ]
"AABBBCCCC")
但是,麻烦已经从我对减速器函数的解构尝试开始了:
fn [[char int []] char] -> [char int []]
我已经知道使用identity 宏可以解决该问题的另一种方法。但是,我仍然想让减速器工作。
非常感谢任何建议和帮助!
【问题讨论】:
标签: clojure