This commit is contained in:
Hugo Mårdbrink 2025-10-01 11:40:08 +02:00
commit 406d4f06eb
3 changed files with 68 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
*.bin
*.txt

64
d01/main.odin Normal file
View file

@ -0,0 +1,64 @@
package main
import "core:slice"
import "core:strconv"
import "core:strings"
import "core:bytes"
import "core:fmt"
import "core:os"
import "../util"
part_1 :: proc(lines: []string) {
nums := slice.mapper(lines[:], proc(line: string) -> i64 {
num, ok := strconv.parse_int(line); assert(ok)
return i64(num)
})
maybe_result: Maybe(i64) = nil
for num1, idx1 in nums {
for num2 in nums[idx1:] {
sum := num1 + num2
if sum == 2020 {
maybe_result = num1 * num2
break
}
}
}
result, ok := maybe_result.?; assert(ok)
fmt.printfln("Part 1: %d", result)
}
part_2 :: proc(lines: []string) {
nums := slice.mapper(lines[:], proc(line: string) -> i64 {
num, ok := strconv.parse_i64(line); assert(ok)
return num
})
maybe_result: Maybe(i64) = nil
for num1, idx1 in nums {
for num2, idx2 in nums[idx1:] {
for num3 in nums[idx2:] {
sum := num1 + num2 + num3
if sum == 2020 {
maybe_result = num1 * num2 * num3
break
}
}
}
}
result, ok := maybe_result.?; assert(ok)
fmt.printfln("Part 2: %d", result)
}
main :: proc() {
INPUT :: #load("input.txt", string)
lines := strings.split(INPUT, "\n")
defer delete(lines)
lines = lines[:len(lines)-1]
part_1(lines)
part_2(lines)
}

2
util/util.odin Normal file
View file

@ -0,0 +1,2 @@
package util