Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defn match [[a b :as pair]]
- (cond
- (every? integer? pair) (when (not= a b) (< a b))
- (integer? a) (recur [[a] b])
- (integer? b) (recur [a [b]])
- :else
- (loop [x 0 y 0]
- (let [f (get a x) s (get b y)]
- (cond
- (not-any? nil? [f s]) (if-some [res (match [f s])] res (recur (inc x) (inc y)))
- (and (nil? f) (some? s)) true
- (and (nil? s) (some? f)) false
- :else nil)))))
- (defn sorter [a b]
- (case (match [a b])
- true -1
- false 1
- nil 0
- ))
- (with-open [rdr (clojure.java.io/reader "comp.in")]
- (let [pairs (->> rdr
- line-seq
- (partition-by clojure.string/blank?)
- (remove (partial every? clojure.string/blank?))
- (map (partial map read-string))
- )]
- (->> pairs
- (map-indexed #(vector (inc %1) (match %2)))
- (filter second)
- (map first)
- (apply +)
- println)
- (->> pairs
- (reduce (fn [all [a b]] (conj all a b)) [])
- (concat [[[2]] [[6]]])
- (sort sorter)
- (map-indexed #(vector (inc %1) %2))
- (filter #(#{[[2]] [[6]]} (second %)))
- (map first)
- (apply *)
- println)
- ))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement