(ns aoc.core [:require [clojure.string :as str]]) (def get-list-from-file #(str/split-lines (slurp %))) (def parse-int #(Integer/parseInt %)) (defn get-fuel-req [mass] (reduce + (take-while #(> % 0) (drop 1 (iterate #(- (quot % 3) 2) mass))))) (defn total-fuel-requirement-naive [input] (reduce + (map #(- (quot % 3) 2) input))) (defn total-fuel-requirement [input] (reduce + (map get-fuel-req input))) (defn -main [] (let [input (map parse-int (get-list-from-file "input"))] (println (total-fuel-requirement-naive input)) (println (total-fuel-requirement input)))) (-main)