solution to 2.20
authorRamakrishnan Muthukrishnan <vu3rdd@gmail.com>
Mon, 21 Jun 2010 14:09:57 +0000 (19:39 +0530)
committerRamakrishnan Muthukrishnan <vu3rdd@gmail.com>
Mon, 21 Jun 2010 14:09:57 +0000 (19:39 +0530)
src/sicp/ex2_20.clj [new file with mode: 0644]

diff --git a/src/sicp/ex2_20.clj b/src/sicp/ex2_20.clj
new file mode 100644 (file)
index 0000000..24b5f5e
--- /dev/null
@@ -0,0 +1,16 @@
+(ns sicp.ex2_20
+  (:use [clojure test]
+       [sicp utils]))
+;; clojure has a slightly different notation compared to Scheme for the
+;; arbitraty number of argument notation.
+(defn same-parity [x & xs]
+  (cons x (filter (fn [y] (if (even? x)
+                           (even? y)
+                           (odd? y)))
+                 xs)))
+
+(deftest test-same-parity
+  (are [x y] [= x y]
+       (same-parity 1 2 3 4 5 6 7) (list 1 3 5 7)
+       (same-parity 2 3 4 5 6 7) (list 2 4 6)))
+