|
1 | 1 | use aoc_runner_derive::{aoc, aoc_generator}; |
2 | 2 |
|
3 | | -#[derive(Debug)] |
4 | | -pub struct Locations { |
5 | | - left: Vec<usize>, |
6 | | - right: Vec<usize>, |
7 | | -} |
8 | | - |
9 | 3 | #[aoc_generator(day1)] |
10 | | -pub fn input_generator(input: &str) -> Locations { |
11 | | - // input.lines().fold((vec![], vec![]), |mut lists, l| { |
12 | | - // let tmp = l.split(" "); |
13 | | - // ( |
14 | | - // tmp.next().unwrap().parse().unwrap(), |
15 | | - // tmp.next().unwrap().parse().unwrap(), |
16 | | - // ) |
17 | | - // }) |
| 4 | +pub fn input_generator(input: &str) -> (Vec<usize>, Vec<usize>) { |
18 | 5 | let mut left = Vec::new(); |
19 | 6 | let mut right = Vec::new(); |
20 | 7 |
|
21 | 8 | for l in input.lines() { |
22 | | - let mut tmp = l.split(" "); |
23 | | - left.push(tmp.next().unwrap().parse().unwrap()); |
24 | | - right.push(tmp.next().unwrap().parse().unwrap()); |
| 9 | + let tmp = l.split_once(" ").unwrap(); |
| 10 | + left.push(tmp.0.parse().unwrap()); |
| 11 | + right.push(tmp.1.parse().unwrap()); |
25 | 12 | } |
26 | 13 | right.sort(); |
27 | 14 | left.sort(); |
28 | | - Locations { right, left } |
| 15 | + |
| 16 | + (left, right) |
29 | 17 | } |
30 | 18 |
|
31 | 19 | #[aoc(day1, part1)] |
32 | | -pub fn part1(input: &Locations) -> usize { |
| 20 | +pub fn part1(input: &(Vec<usize>, Vec<usize>)) -> usize { |
33 | 21 | let mut sum = 0; |
34 | | - for n in 0..input.left.len() { |
35 | | - sum += input.left[n].abs_diff(input.right[n]) |
| 22 | + |
| 23 | + for n in 0..input.0.len() { |
| 24 | + sum += input.0[n].abs_diff(input.1[n]) |
36 | 25 | } |
| 26 | + |
37 | 27 | sum |
38 | 28 | } |
39 | 29 |
|
40 | 30 | #[aoc(day1, part2)] |
41 | | -pub fn part2(input: &Locations) -> usize { |
| 31 | +pub fn part2(input: &(Vec<usize>, Vec<usize>)) -> usize { |
42 | 32 | let mut sum = 0; |
43 | | - for n in 0..input.left.len() { |
44 | | - sum += input.left[n] * input.right.iter().filter(|&i| *i == input.left[n]).count() |
| 33 | + |
| 34 | + for n in 0..input.0.len() { |
| 35 | + sum += input.0[n] * input.1.iter().filter(|&i| *i == input.0[n]).count() |
45 | 36 | } |
| 37 | + |
46 | 38 | sum |
47 | 39 | } |
48 | 40 |
|
|
0 commit comments