 
      (match? [gray samples]
        (if (some identity (map #(every? (set gray) %) samples))
-            1 0))
+           1 0))
 
      (gray-map [samples]
        (let [sample (sort (clojure.string/lower-case (apply str (first samples))))

  (let [m* (fn [n m] (map #(* % n) m))
        l+ (fn [p l] (map #(map + p %) l))
        seed [[0 1] [1 0] [1 1] [-1 1]]
        mult [-2 -1 1 2 ]
        delta (map (fn [l] (map #(m* % l) mult)) seed)
        lines (fn [p] (map #(l+ p %) delta))
        check-ln (fn [ln] (filter identity (map #(get-in xo %) ln)))

                           9 [i x]}]
                 (apply str (d->r d))))
        digits (fn [n] (map #(- (int %) (int \0)) (str n)))]
    (->> (map a->r (reverse (digits a)) (partition-all 3 2 r))
         (reverse)
         (apply str))))
;; wow solution
