๐ŸŽ„ advent of code 2025

day7 part1 gleam

okkdev a6b4e874 ba2bc8ba

Changed files
+50
day7
+50
day7/day7.gleam
··· 1 + import gleam/dict 2 + import gleam/int 3 + import gleam/io 4 + import gleam/list 5 + import gleam/pair 6 + import gleam/set 7 + import gleam/string 8 + import simplifile 9 + 10 + pub fn main() { 11 + let assert Ok(raw_input) = simplifile.read("src/day7/input.txt") 12 + 13 + let assert [first, ..rest] = 14 + string.trim(raw_input) 15 + |> string.split("\n") 16 + 17 + let input = 18 + list.map(rest, fn(line) { 19 + string.to_graphemes(line) 20 + |> list.index_map(fn(x, i) { #(i, x) }) 21 + |> dict.from_list 22 + }) 23 + 24 + let start = 25 + string.to_graphemes(first) 26 + |> list.index_fold(0, fn(acc, x, i) { 27 + case x { 28 + "S" -> i 29 + _ -> acc 30 + } 31 + }) 32 + 33 + let part1 = 34 + list.fold(input, #(0, set.from_list([start])), fn(acc, x) { 35 + set.fold(acc.1, acc, fn(acc, y) { 36 + case dict.get(x, y) { 37 + Ok("^") -> #( 38 + acc.0 + 1, 39 + set.delete(acc.1, y) 40 + |> set.insert(y + 1) 41 + |> set.insert(y - 1), 42 + ) 43 + _ -> acc 44 + } 45 + }) 46 + }) 47 + |> pair.first 48 + 49 + io.println("Part 1: " <> int.to_string(part1)) 50 + }