(ns adventofcode2019.day04 [:require [adventofcode2019.lib :refer :all] [clojure.string :as str] [clojure.math.combinatorics :as combo]]) (defn find-passwords [low high] (let [dupe-digits #(some (partial apply =) (partition 2 1 %)) increasing (partial apply <=) to-digits #(map int (str %))] (->> (range low (inc high)) (map to-digits) (filter (every-pred dupe-digits increasing))))) (defn day04 [] (let [[low high] [307237 769058] passwords (find-passwords low high) strict-dd (fn [x] (some #(= (count %) 2) (partition-by identity x)))] (part1 (count passwords)) (part2 (count (filter strict-dd passwords)))))