From: Ramakrishnan Muthukrishnan Date: Sun, 20 Jun 2010 04:49:58 +0000 (+0530) Subject: solution to 2.18 X-Git-Url: https://git.rkrishnan.org/%5B/frontends/%22file:/flags/index.php?a=commitdiff_plain;h=5ec86bcda9141f7afb31cd9b329bcf78307b721a;p=sicp.git solution to 2.18 --- diff --git a/src/sicp/ex2_18.clj b/src/sicp/ex2_18.clj new file mode 100644 index 0000000..b56c4e8 --- /dev/null +++ b/src/sicp/ex2_18.clj @@ -0,0 +1,24 @@ +(ns sicp.ex2_18 + (:use [clojure test])) + +(defn turn-around-1 [lst] + (reduce #(cons %2 %1) '() lst)) + + +(defn turn-around-2 [lst] + (let [reverse (fn [lst1 lst2] + (if (empty? lst1) + lst2 + (recur (rest lst1) (cons (first lst1) lst2))))] + (reverse lst '()))) + + +(deftest test-turn-around-1 + (are [x y] [= x y] + (turn-around-1 (list 1 2 3 4)) (list 4 3 2 1) + (turn-around-1 (list 1 4 9 16 25)) (list 25 16 9 4 1))) + +(deftest test-turn-around-2 + (are [x y] [= x y] + (turn-around-2 (list 1 2 3 4)) (list 4 3 2 1) + (turn-around-2 (list 1 4 9 16 25)) (list 25 16 9 4 1)))