         y (- x k)]
     [x y]))
 
-(defn- longest-snake
+(defn snake
   "Starting at point (x, y) return the x value of the point at the end of the
   longest snake on this diagonal. A snake is a sequence of diagonal moves
   connection match points on the edit graph."

    (if (seq diagonals)
      (let [k (first diagonals)
            [x y] (next-point d k v)
            x (longest-snake a b x y n m)
            y (- x k)
            v (assoc v k x)]
        (if (and (>= x n) (>= y m))

          []
          additions))

(defn path->script [a b path]
  (let [script
        (reduce (fn [e p]
                  (let [c (:current e)
                        x (first p)
