Solve AOC day 5 part 1

This commit is contained in:
2020-12-07 08:37:21 -07:00
parent 49d0ff3677
commit dc1e56d690
5 changed files with 960 additions and 1 deletions

View File

@@ -0,0 +1,15 @@
(defun search [:Array<String> letters min max rowOrColumn]
(if (= min max)
min
(let [middle (Math.floor (/ (+ min max) 2))]
(case [(letters.shift) rowOrColumn]
(["F" "row"] (search letters min middle rowOrColumn))
(["B" "row"] (search letters (+ 1 middle) max rowOrColumn))
(["L" "column"] (search letters min middle rowOrColumn))
(["R" "column"] (search letters (+ 1 middle) max rowOrColumn))
(otherwise (throw "invalid search call"))))))
(defun seatId [:String boardingPass]
(+
(* 8 (search (.split (boardingPass.substr 0 7) "") 0 127 "row"))
(search (.split (boardingPass.substr 7) "") 0 7 "column")))