Solution to Day 2 in Julia
This commit is contained in:
parent
9c8aeaef13
commit
5ee2dd1812
80
src/Year_2025/Julia/Day02/aoc_02.jl
Normal file
80
src/Year_2025/Julia/Day02/aoc_02.jl
Normal file
@ -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
|
||||
1
src/Year_2025/Julia/Day02/demo.txt
Normal file
1
src/Year_2025/Julia/Day02/demo.txt
Normal file
@ -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
|
||||
1
src/Year_2025/Julia/Day02/input.txt
Normal file
1
src/Year_2025/Julia/Day02/input.txt
Normal file
@ -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
|
||||
Loading…
x
Reference in New Issue
Block a user