diff --git a/2024/01/drakeerv.v b/2024/01/drakeerv.v new file mode 100644 index 0000000..4835096 --- /dev/null +++ b/2024/01/drakeerv.v @@ -0,0 +1,43 @@ +import os +import strconv +import arrays + +fn main() { + lines := os.read_file('locations.input')!.split_into_lines() + + mut first_numbers := []u32{} + mut second_numbers := []u32{} + + for i in 0..lines.len { + numbers := lines[i].split(" ") + + first_numbers << u32(strconv.parse_uint(numbers[0], 10, 32)!) + second_numbers << u32(strconv.parse_uint(numbers[1], 10, 32)!) + } + + first_numbers.sort() + second_numbers.sort() + + mut total := 0 + + for i in 0..lines.len { + mut distance := i32(first_numbers[i] - second_numbers[i]) + if distance < 0 { + distance = -distance + } + total += distance + } + + println('part1: ${total}') + + second_map := arrays.map_of_counts(second_numbers) + + mut similarity := 0 + + for value in first_numbers { + similarity += second_map[value] * value + } + + println('part2: ${similarity}') +} + diff --git a/known/2024/01/drakeerv.out b/known/2024/01/drakeerv.out new file mode 100644 index 0000000..dfebc48 --- /dev/null +++ b/known/2024/01/drakeerv.out @@ -0,0 +1,2 @@ +part1: 11 +part2: 31