(require (quote [clojure.set :as s]))
(require (quote [clojure.core.reducers :as r]))
(require (quote [clojure.contrib.math :as m]))
(def n [0, 3, 5, 6])
(def a (concat n (map #(- 15 %) (reverse n))))
(def b (s/difference (set (range 16)) (set a)))
(defn
| [x
] (conj [] (apply str
(interpose
", " x
)))) (println (| a) (| b))
(doseq [p (range 0 4)]
(def ai (r/fold + (map #(m/expt % p) a)))
(def bi (r/fold + (map #(m/expt % p) b)))
ICAgIChyZXF1aXJlIChxdW90ZSBbY2xvanVyZS5zZXQgICAgICAgICAgIDphcyBzXSkpCiAgICAocmVxdWlyZSAocXVvdGUgW2Nsb2p1cmUuY29yZS5yZWR1Y2VycyA6YXMgcl0pKQogICAgKHJlcXVpcmUgKHF1b3RlIFtjbG9qdXJlLmNvbnRyaWIubWF0aCAgOmFzIG1dKSkKICAgIChkZWYgbiBbMCwgMywgNSwgNl0pCiAgICAoZGVmIGEgKGNvbmNhdCBuIChtYXAgIygtIDE1ICUpIChyZXZlcnNlIG4pKSkpCiAgICAoZGVmIGIgKHMvZGlmZmVyZW5jZSAoc2V0IChyYW5nZSAxNikpIChzZXQgYSkpKQogICAgKGRlZm4gfCBbeF0gKGNvbmogW10gKGFwcGx5IHN0ciAoaW50ZXJwb3NlICIsICIgeCkpKSkKICAgIChwcmludGxuICh8IGEpICh8IGIpKQogICAgKGRvc2VxIFtwIChyYW5nZSAwIDQpXQogICAgICAoZGVmIGFpIChyL2ZvbGQgKyAobWFwICMobS9leHB0ICUgcCkgYSkpKQogICAgICAoZGVmIGJpIChyL2ZvbGQgKyAobWFwICMobS9leHB0ICUgcCkgYikpKQogICAgICAocHJpbnRmICIlNWQlNWRcbiIgYWksIGJpKSkK