summaryrefslogtreecommitdiff
path: root/2025/ocaml/lib/application/d03p02.ml
diff options
context:
space:
mode:
authorDJ O'Leary <dijitol@proton.me>2025-12-13 16:21:12 +0100
committerDJ O'Leary <dijitol@proton.me>2025-12-13 16:21:12 +0100
commitaa617317241098f5aecbd548eb0447935fb4b789 (patch)
treeb42eb0260fb51aaa9c5874614bf77dc68ffa8fe3 /2025/ocaml/lib/application/d03p02.ml
parent97b817acfedf63c384d961a69bdf749a6e4e829b (diff)
feat(2025d3): copy part 1 over to part 2
Diffstat (limited to '2025/ocaml/lib/application/d03p02.ml')
-rw-r--r--2025/ocaml/lib/application/d03p02.ml23
1 files changed, 23 insertions, 0 deletions
diff --git a/2025/ocaml/lib/application/d03p02.ml b/2025/ocaml/lib/application/d03p02.ml
new file mode 100644
index 0000000..743c658
--- /dev/null
+++ b/2025/ocaml/lib/application/d03p02.ml
@@ -0,0 +1,23 @@
+open Domain.D03p02
+
+let err_empty_input = "input is empty"
+
+let to_lines s =
+ s |> String.split_on_char '\n' |> List.map String.trim
+ |> List.filter (fun l -> l <> "")
+
+let solve input () =
+ if input = "" then Error err_empty_input
+ else
+ let answer =
+ input |> to_lines |> List.to_seq
+ |> Seq.map BatteryBank.of_string
+ |> Seq.mapi (fun idx bb ->
+ let joltage = BatteryBank.highest_joltage bb in
+ Logs.debug (fun m ->
+ m "%d line=%s highest_joltage=%d" (idx + 1) (BatteryBank.pp bb)
+ joltage ) ;
+ joltage )
+ |> Seq.fold_left ( + ) 0
+ in
+ Ok answer