commit 406d4f06eb1bfef01fd48d180eb79890384ae00d Author: Hugo MÄrdbrink Date: Wed Oct 1 11:40:08 2025 +0200 Day 1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bd12779 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.bin +*.txt diff --git a/d01/main.odin b/d01/main.odin new file mode 100644 index 0000000..350d2de --- /dev/null +++ b/d01/main.odin @@ -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) +} diff --git a/util/util.odin b/util/util.odin new file mode 100644 index 0000000..a5e4c54 --- /dev/null +++ b/util/util.odin @@ -0,0 +1,2 @@ +package util +