diff --git a/src/Year_2025/Julia/Day02/aoc_02.jl b/src/Year_2025/Julia/Day02/aoc_02.jl new file mode 100644 index 0000000..ddf0eb1 --- /dev/null +++ b/src/Year_2025/Julia/Day02/aoc_02.jl @@ -0,0 +1,80 @@ +#!/usr/bin/env -S julia --project +module AdventOfCodeDayXX + function parse_part1(filename::String) + ranges = split(read(filename, String), ",") + return ranges + end + + function part1(filename::String) + ranges = parse_part1(filename) + invalid::Int = 0 + for r in ranges + id1, id2 = split(r, "-") + start_id = parse(Int, strip(id1)) + end_id = parse(Int, strip(id2)) + for value in start_id:end_id + s = collect(string(value)) + half = length(s) ÷ 2 + if s[1:half] == s[half + 1:end] + invalid += value + end + end + end + return invalid + end + + function part2(filename::String) + ranges = parse_part1(filename) + invalid::Int = 0 + for r in ranges + id1, id2 = split(r, "-") + start_id = parse(Int, strip(id1)) + end_id = parse(Int, strip(id2)) + for value in start_id:end_id + s = collect(string(value)) + for cutoff in 1:(length(s) ÷ 2) + left = s[1:cutoff] + right_start = cutoff + 1 + repeating = true + while right_start <= length(s) + right_end = right_start + cutoff - 1 + if right_end > length(s) || s[right_start:right_end] != left + repeating = false + break + end + right_start += cutoff + end + if repeating && length(s) % cutoff == 0 + invalid += value + break + end + end + end + end + return invalid + end + + function main() + demo_p1 = part1("demo.txt") + input_p1 = part1("input.txt") + demo_p2 = part2("demo.txt") + input_p2 = part2("input.txt") + + println("Advent of Code — Day 02") + println("="^23) + println("Demo Results:") + println(" Part 1: ", demo_p1) + println(" Part 2: ", demo_p2) + println() + println("Input Results:") + println(" Part 1: ", input_p1) + println(" Part 2: ", input_p2) + println("="^23) + end + + function __init__() + if abspath(PROGRAM_FILE) == @__FILE__ + main() + end + end +end diff --git a/src/Year_2025/Julia/Day02/demo.txt b/src/Year_2025/Julia/Day02/demo.txt new file mode 100644 index 0000000..a3f22ef --- /dev/null +++ b/src/Year_2025/Julia/Day02/demo.txt @@ -0,0 +1 @@ +11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124 diff --git a/src/Year_2025/Julia/Day02/input.txt b/src/Year_2025/Julia/Day02/input.txt new file mode 100644 index 0000000..6bbd944 --- /dev/null +++ b/src/Year_2025/Julia/Day02/input.txt @@ -0,0 +1 @@ +492410748-492568208,246-390,49-90,16-33,142410-276301,54304-107961,12792-24543,3434259704-3434457648,848156-886303,152-223,1303-1870,8400386-8519049,89742532-89811632,535853-567216,6608885-6724046,1985013826-1985207678,585591-731454,1-13,12067202-12233567,6533-10235,6259999-6321337,908315-972306,831-1296,406-824,769293-785465,3862-5652,26439-45395,95-136,747698990-747770821,984992-1022864,34-47,360832-469125,277865-333851,2281-3344,2841977-2953689,29330524-29523460