; the previous.
;
-(->> (slurp "./in")
- (clojure.string/split-lines)
- (map read-string)
+(as-> (slurp "./in") $
+ (clojure.string/split-lines $)
+ (map read-string $)
(reduce
- #(update [%2 (second %1)] 1 (partial + (if (> %2 (first %1)) 1 0)))
- [999999 0]
- )
- (second)
- (println)
- )
+ #(cond-> (assoc %1 0 %2) (> %2 (first %1)) (update 1 inc))
+ [(first $) 0]
+ (rest $))
+ (println (second $)))
; the previous number, and the next number.
;
-(loop [inc-count 0
- buff (repeat 4 (Integer/parseInt (read-line)))
- ]
- (let [next (read-line)
- new-count (if (> (last buff) (first buff))
- (inc inc-count)
- inc-count
- )
- ]
- (if (empty? next)
- (println new-count)
- (recur
- new-count
- (concat
- (rest buff)
- [(Integer/parseInt next)]
- )
- )
- )
- )
- )
+(let [input (->> (slurp "./in")
+ clojure.string/split-lines
+ (mapv read-string))]
+ (println
+ (count
+ (filter #(< (get input %) (get input (+ % 3)))
+ (range 0 (- (count input) 3))))))