Day 1
This commit is contained in:
commit
406d4f06eb
3 changed files with 68 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
*.bin
|
||||||
|
*.txt
|
||||||
64
d01/main.odin
Normal file
64
d01/main.odin
Normal 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
2
util/util.odin
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
package util
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue