This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns ray-tracer | |
(:import java.util.List | |
java.awt.Color | |
java.awt.image.BufferedImage | |
javax.imageio.ImageIO | |
java.io.File)) | |
(alter-var-root #'*compiler-options* (constantly {:direct-linking true}) ) | |
(set! *unchecked-math* :warn-on-boxed) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; Didn't know yet that there is a special syntax to make regexes overlapping. Got angry and wrote this. | |
(require '[clojure.string :as str]) | |
(def digits (->> ["one" "two" "three" "four" "five" "six" "seven" "eight" "nine"] | |
(map-indexed (fn [i w] [w (str (inc i))])) | |
(into {}))) | |
(def rx (re-pattern (str/join "|" (conj (keys digits) "[0-9]")))) | |
(def rx-rev (re-pattern (str/join "|" (conj (map str/reverse (keys digits)) "[0-9]")))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns day4 | |
(:require [clojure.set :as set] | |
[clojure.java.io :as io])) | |
(def lines (vec (line-seq (io/reader "2023/day4.txt")))) | |
(defn parse [] | |
(for [line lines] | |
(let [[winning guessed] (str/split line #"\|") | |
[game & winning] (map parse-long (re-seq #"\d+" winning)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns day5 | |
(:require [clojure.java.io :as io])) | |
(def lines (vec (line-seq (io/reader "2023/day5.txt")))) | |
(defn parse [task] | |
(let [seeds (mapv parse-long (re-seq #"\d+" (first lines))) | |
seeds (case task | |
1 seeds | |
2 (->> (partition 2 seeds) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns day6 | |
(:require [clojure.string :as str])) | |
(defn parse [task] | |
(->> (line-seq (io/reader "2023/day6.txt")) | |
(map #(map parse-long | |
(re-seq #"\d+" (case task | |
1 % | |
2 (str/replace % #" " ""))))))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns day7 | |
(:require [clojure.string :as str] | |
[clojure.java.io :as io])) | |
(def lines (vec (line-seq (io/reader "day7.txt")))) | |
(defn parse [task] | |
(for [line lines] | |
(let [[hand bid] (str/split line #" " )] | |
[(mapv #(case % |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns day12 | |
(:require [clojure.string :as str] | |
[clojure.java.io :as io])) | |
(def lines (line-seq (io/reader "2023/day12.txt"))) | |
(defn parse [task] | |
(for [line lines] | |
(let [[field hints] (str/split line #" ")] | |
(case task |
OlderNewer