Advent of Code 2025 solutions in Gleam

Code improvements

+1
.gitignore
··· 3 /build 4 erl_crash.dump 5 .DS_Store
··· 3 /build 4 erl_crash.dump 5 .DS_Store 6 + /inputs
+15 -22
src/days/day01.gleam
··· 1 import gleam/int 2 import gleam/io 3 import gleam/list 4 import gleam/string 5 6 pub fn part1(input: String) -> String { 7 - int.to_string(solve_claude(input)) 8 - } 9 - 10 - pub fn part2(input: String) -> String { 11 - // TODO: Implement part 2 12 - "Not implemented" 13 - } 14 - 15 - pub fn solve(input: String) -> Nil { 16 - io.println("Day 1:") 17 - io.println("Part 1: " <> part1(input)) 18 - io.println("Part 2: " <> part2(input)) 19 - } 20 - 21 - pub fn solve_claude(input: String) -> Int { 22 let rotations = parse_input(input) 23 let #(_, zero_count) = 24 list.fold(rotations, #(50, 0), fn(state, rotation) { ··· 30 } 31 #(new_position, new_count) 32 }) 33 - zero_count 34 } 35 36 fn parse_input(input: String) -> List(#(String, Int)) { ··· 59 "R" -> position + distance 60 _ -> position 61 } 62 - // Handle wrapping around 0-99 63 - let wrapped = new_position % 100 64 - case wrapped < 0 { 65 - True -> wrapped + 100 66 - False -> wrapped 67 - } 68 }
··· 1 import gleam/int 2 import gleam/io 3 import gleam/list 4 + import gleam/result 5 import gleam/string 6 7 pub fn part1(input: String) -> String { 8 let rotations = parse_input(input) 9 let #(_, zero_count) = 10 list.fold(rotations, #(50, 0), fn(state, rotation) { ··· 16 } 17 #(new_position, new_count) 18 }) 19 + int.to_string(zero_count) 20 + } 21 + 22 + pub fn part2(_input: String) -> String { 23 + // TODO: Implement part 2 24 + "Not implemented" 25 + } 26 + 27 + pub fn solve(input: String) -> Nil { 28 + io.println("Day 1:") 29 + io.println("Part 1: " <> part1(input)) 30 + io.println("Part 2: " <> part2(input)) 31 } 32 33 fn parse_input(input: String) -> List(#(String, Int)) { ··· 56 "R" -> position + distance 57 _ -> position 58 } 59 + 60 + int.modulo(new_position, 100) |> result.unwrap(new_position) 61 }
+2 -3
src/days/day02.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day03.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day04.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day05.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day06.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day07.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day08.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day09.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day10.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day11.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day12.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day13.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day14.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day15.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day16.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day17.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day18.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day19.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day20.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day21.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day22.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day23.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day24.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -3
src/days/day25.gleam
··· 1 import gleam/io 2 - import gleam/string 3 4 - pub fn part1(input: String) -> String { 5 // TODO: Implement part 1 6 "Not implemented" 7 } 8 9 - pub fn part2(input: String) -> String { 10 // TODO: Implement part 2 11 "Not implemented" 12 }
··· 1 import gleam/io 2 3 + pub fn part1(_input: String) -> String { 4 // TODO: Implement part 1 5 "Not implemented" 6 } 7 8 + pub fn part2(_input: String) -> String { 9 // TODO: Implement part 2 10 "Not implemented" 11 }
+2 -4
test/aoc2025_gleam_test.gleam
··· 1 - import days/day01 2 - import days/day02 3 import gleeunit 4 5 pub fn main() -> Nil { ··· 8 9 // Example test for day01 10 pub fn day01_part1_test() { 11 - let example_input = "" 12 // Add your example input here 13 // assert day01.part1(example_input) == "expected_result" 14 } 15 16 // Example test for day01 part 2 17 pub fn day01_part2_test() { 18 - let example_input = "" 19 // Add your example input here 20 // assert day01.part2(example_input) == "expected_result" 21 }
··· 1 import gleeunit 2 3 pub fn main() -> Nil { ··· 6 7 // Example test for day01 8 pub fn day01_part1_test() { 9 + let _example_input = "" 10 // Add your example input here 11 // assert day01.part1(example_input) == "expected_result" 12 } 13 14 // Example test for day01 part 2 15 pub fn day01_part2_test() { 16 + let _example_input = "" 17 // Add your example input here 18 // assert day01.part2(example_input) == "expected_result" 19 }