my solutions to advent of code
aoc advent-of-code

part 2 naive

aylac.top fbe12393 7c0cfdee

verified
Changed files
+50 -20
2025
7
gleam
+50 -20
2025/7/gleam/src/main.gleam
···
_ -> acc
}
})
-
let splitters =
+
let splitters_map =
input
|> list.drop(1)
|> list.index_map(fn(line, i) {
···
}
})
})
-
let #(beams, times) =
-
echo splitters
-
|> list.fold(#(set.new() |> set.insert(start), 0), fn(acc, splitters) {
+
let #(_beams, times) =
+
splitters_map
+
|> list.fold(#(set.new() |> set.insert(start), 0), fn(acc, splitters) {
+
let #(beams, times) = acc
+
beams
+
|> set.fold(#(beams, times), fn(acc, beam) {
let #(beams, times) = acc
-
beams
-
|> set.fold(#(beams, times), fn(acc, beam) {
-
let #(beams, times) = acc
-
case splitters |> set.contains(beam) {
-
False -> acc
-
True -> {
-
#(
-
beams
-
|> set.delete(beam)
-
|> set.insert(beam - 1)
-
|> set.insert(beam + 1),
-
times + 1,
-
)
-
}
+
case splitters |> set.contains(beam) {
+
False -> acc
+
True -> #(
+
beams
+
|> set.delete(beam)
+
|> set.insert(beam - 1)
+
|> set.insert(beam + 1),
+
times + 1,
+
)
+
}
+
})
+
})
+
+
times
+
|> int.to_string
+
|> io.println
+
+
let timelines =
+
splitters_map
+
|> list.fold(dict.new() |> dict.insert(0, start), fn(timelines, splitters) {
+
// echo #(timelines, splitters)
+
timelines
+
|> dict.fold(timelines, fn(timelines, timeline, beam) {
+
case splitters |> set.contains(beam) {
+
False -> timelines
+
True -> {
+
timelines
+
|> dict.delete(timeline)
+
|> dict.insert(
+
int.random(100_000_000_000_000_000_000_000),
+
beam - 1,
+
)
+
|> dict.insert(
+
int.random(100_000_000_000_000_000_000_000),
+
beam + 1,
+
)
}
-
})
+
}
})
-
echo set.size(beams)
+
})
+
echo timelines
+
timelines
+
|> dict.size
+
|> int.to_string
+
|> io.println
}