    "##############################"])
 
 #_
-(let [cave expensive-cave]
-  (doseq [x (annotate-path cave (find-path cave [0 15] [2 15]))]
+(let [cave expensive-cave2]
+  (doseq [x (annotate-path cave (find-path cave [0 15] [2 15] {:cost-fn {\# 1, \^ 10}}))]
     (println x)))
 
 #_
 (let [cave mc/meadow-32x32x4]
-  (doseq [x (annotate-path cave (find-path cave [0 0] [31 31]))]
+  (doseq [x (annotate-path cave (find-path cave [0 0] [31 31] {:cost-fn {\# 1, \^ 10}}))]
     (println x)))
+
+
+;; meadow connecting tests
+#_
+(let [cave mc/meadow-32x32x4
+      routes (find-routes cave (find-meadows cave))]
+  (doseq [x (annotate-path cave (apply concat routes) {:mark \space})]
+    (println x)))

    (let [m (meadow-from cave coord)]
      [(conj meadows m) coords])))

(defn meadows [cave]
  (let [h (count cave), w (count (first cave))]
    (->> [[] (for [y (range h), x (range w) :when (= \space (get-in cave [y x]))] [y x])]
         (iterate (partial step-cave cave))

    [clojure.pprint :as pp]
    [clojure.set :as set]
    [clojure-club.meadow-finder.core :as mc]))

(def inf #?(:clj Double/POSITIVE_INFINITY, :cljs +Infinity))

(defn manhattan [[y1 x1] [y2 x2]]
  (+ (Math/abs (- y1 y2)) (Math/abs (- x1 x2))))

(defn euclid [[y1 x1] [y2 x2]]
  (Math/sqrt (+ (Math/pow (Math/abs (- x1 x2)) 2)
                (Math/pow (Math/abs (- y1 y2)) 2))))

(defn neighbors [[y x]]
  (let [ys ((juxt dec identity inc identity) y)
