<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -25,10 +25,11 @@
        (segment-pattern? pattern) (segment-matcher pattern input bindings)
        (single-pattern? pattern) (single-matcher pattern input bindings)
        (and
-	(sequential? pattern)
-	(sequential? input)) (recur (rest pattern) (rest input)
-				    (pat-match (first pattern) (first input)
-					       bindings))
+        (sequential? pattern)
+        (sequential? input)) 
+                    (recur (rest pattern) (rest input)
+                           (pat-match (first pattern) (first input)
+                                      bindings))
        :else fail)))
 
 (defn segment-matcher
@@ -66,9 +67,9 @@
   [pat1 input start]
 ;  (dbg :patmatch (format &quot;first-match-pos %s %s %s&quot; pat1 input start))
   (cond
-    (and (not (sequential? pat1)) (not (variable? pat1)))
+    (and (not (coll? pat1)) (not (variable? pat1)))
       (position (partial = pat1) input start)
-    (&lt; start (count input)) start
+    (&lt;= start (count input)) start
     :else nil))
     
 
@@ -77,19 +78,19 @@
   ([pattern input bindings]
      (segment-match pattern input bindings 0))
   ([pattern input bindings start]
-     (dbg :patmatch (format &quot;Segment Match %s %s %s&quot; pattern input bindings start))
+     (dbg :patmatch (format &quot;Segment Match %s %s %s&quot; pattern (first (list input)) bindings start))
      (let [var (second (first pattern))
-	   pat (rest pattern)]
+           pat (rest pattern)]
        (if (empty? pat)
-	 (match-variable var input bindings)
-	 (let [pos (first-match-pos (first pat) input start)]
-	   (if (nil? pos)
-	     fail
-	     (let [b2 (pat-match pat (map identity (subvec (vec input) pos))
-				 (match-variable var (map identity (subvec (vec input) 0 pos)) bindings))]
-	       (if (= b2 fail)
-		 (segment-match pattern input bindings (inc pos))
-		 b2))))))))
+         (match-variable var input bindings)
+         (let [pos (first-match-pos (first pat) input start)]
+           (if (nil? pos)
+             fail
+             (let [b2 (pat-match pat (subvec (vec input) pos)
+                                  (match-variable var (subvec (vec input) 0 pos) bindings))]
+               (if (= b2 fail)
+                 (segment-match pattern input bindings (inc pos))
+                 b2))))))))
 
 (defn segment-match+ 
   &quot;Match one or more elements of input.&quot;
@@ -211,9 +212,7 @@
   [input rules :matcher pat-match :rule-if first :rule-then rest :action replace]
   (some 
    (fn [rule]
-     (dbg :patmatch (format &quot;Rule: %s&quot; rule))
      (let [result (matcher (rule-if rule) input)]
-       (dbg :patmmatch (format &quot;Binding: &quot; result))
        (if (not= result fail)
          (action result (rule-then rule)))))
    rules))</diff>
      <filename>ai/uk/co/fatvat/patmatch.clj</filename>
    </modified>
    <modified>
      <diff>@@ -262,8 +262,13 @@
 (defn solve-equations
   &quot;Print the equations and their solution&quot;
   [equations]
-  (print-equations &quot;The equations to be solved are:&quot; equations))
-;  (print-equations &quot;The solution is:&quot; (solve (map mk-exp-infix equations) nil)))
+  (print-equations &quot;The equations to be solved are:&quot; equations)
+  (solve (map mk-exp-infix equations) nil))
+
+(deftest solve-equations-test
+  (is (= ({:op '=, :lhs 'y, :rhs 2} {:op '=, :lhs 'x, :rhs 2})
+         (solve-equations '((= (+ 3 4) (* (- 5 (+ 2 x)) 7))
+                            (= (+ (* 3 x) y) 12))))))
 
 (defn student
   &quot;Solve certain Algebra Word Problems.&quot;</diff>
      <filename>ai/uk/co/fatvat/student.clj</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>75bea30c2a7155ea3534cd9add3c248e9a8a91c7</id>
    </parent>
  </parents>
  <author>
    <name>Jeff Foster</name>
    <email>jeff.foster@acm.org</email>
  </author>
  <url>http://github.com/fffej/ClojureProjects/commit/a6c5593a836fe1c60ed96ea00447c73bae636b05</url>
  <id>a6c5593a836fe1c60ed96ea00447c73bae636b05</id>
  <committed-date>2009-07-24T13:53:05-07:00</committed-date>
  <authored-date>2009-07-24T13:53:05-07:00</authored-date>
  <message>final updates</message>
  <tree>2c3f5f78af3cb1270912175c7e7b7f366564f41e</tree>
  <committer>
    <name>Jeff Foster</name>
    <email>jeff.foster@acm.org</email>
  </committer>
</commit>
