(defn n-digits [digits]
(let
[low (nth (iterate (partial * 10) 1) (dec digits))
high (dec (nth (iterate (partial * 10) 1) digits))]
(vector low high)))
(defn n-digit-products [digits]
(let [[low high] (n-digits digits)]
(distinct
(for [x (range low (inc high)) y (range low (inc high)) :while (<= y x)]
(* x y)))))
(defn palindromic-products [digits]
(reverse (sort (filter #(= (seq (str %)) (reverse (str %))) (n-digit-products digits)))))
(println palindromic-products 2)
KGRlZm4gbi1kaWdpdHMgW2RpZ2l0c10KICAgICAgICAobGV0CiAgICAgICAgICAgICAgICBbbG93IChudGggKGl0ZXJhdGUgKHBhcnRpYWwgKiAxMCkgMSkgKGRlYyBkaWdpdHMpKQogICAgICAgICAgICAgICAgaGlnaCAoZGVjIChudGggKGl0ZXJhdGUgKHBhcnRpYWwgKiAxMCkgMSkgZGlnaXRzKSldCiAgICAgICAgICAgICAgICAodmVjdG9yIGxvdyBoaWdoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIAooZGVmbiBuLWRpZ2l0LXByb2R1Y3RzIFtkaWdpdHNdCiAgICAgICAgKGxldCBbW2xvdyBoaWdoXSAobi1kaWdpdHMgZGlnaXRzKV0KICAgICAgICAgICAgICAgIChkaXN0aW5jdAogICAgICAgICAgICAgICAgICAgICAgICAoZm9yIFt4IChyYW5nZSBsb3cgKGluYyBoaWdoKSkgeSAocmFuZ2UgbG93IChpbmMgaGlnaCkpIDp3aGlsZSAoPD0geSB4KV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB4IHkpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAKKGRlZm4gcGFsaW5kcm9taWMtcHJvZHVjdHMgW2RpZ2l0c10KICAgICAgICAocmV2ZXJzZSAoc29ydCAoZmlsdGVyICMoPSAoc2VxIChzdHIgJSkpIChyZXZlcnNlIChzdHIgJSkpKSAobi1kaWdpdC1wcm9kdWN0cyBkaWdpdHMpKSkpKQogCihwcmludGxuIHBhbGluZHJvbWljLXByb2R1Y3RzIDIp