8 lines
312 B
Clojure
8 lines
312 B
Clojure
(defn ps+ [ps0 ps1]
|
|
(letfn [(+zs [ps] (concat ps (repeat :z)))
|
|
(notz? [a] (not= :z a))
|
|
(nval [a] (if (notz? a) a 0))
|
|
(z+ [a0 a1] (if (= :z a0 a1) :z (+ (nval a0) (nval a1))))]
|
|
(take-while notz? (map z+ (+zs ps0) (+zs ps1)))))
|
|
|
|
(defn ps- [ps0 ps1] (ps+ ps0 (map - ps1)))
|