(defn fast-caesar [n s] (let [m (mod n 26) upper (map char (range 65 91)) upper->new (zipmap upper (drop m (cycle upper))) lower (map char (range 97 123)) lower->new (zipmap lower (drop m (cycle lower)))] (clojure.string/escape s (merge upper->new lower->new))))