如何在 Clojure 中为Burrows-Wheeler 变换惯用地旋转字符串?
我想出了这个,它使用(cycle "string")
,但感觉有点必要:
(let [s (str "^" "banana" "|")
l (count s)
c (cycle s)
m (map #(take l (drop % c)) (range l))]
(apply map str m))
=> ("^banana|" "banana|^" "anana|^b" "nana|^ba" "ana|^ban" "na|^bana" "a|^banan" "|^banana")
我不确定这是否符合代码高尔夫的条件。有没有更清洁的方法来做到这一点?