diff options
Diffstat (limited to '2017/src/bin/day01.rs')
-rw-r--r-- | 2017/src/bin/day01.rs | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/2017/src/bin/day01.rs b/2017/src/bin/day01.rs index ee81d15..70ca5a6 100644 --- a/2017/src/bin/day01.rs +++ b/2017/src/bin/day01.rs @@ -1,10 +1,10 @@ use std::io::{self, Read}; -fn solve(input: &str) -> u32 { +fn solve(input: &str, skip: usize) -> u32 { let mut sum = 0; let chars = input.chars(); - let nexts = input.chars().cycle().skip(1); + let nexts = input.chars().cycle().skip(skip); for (a, b) in chars.zip(nexts) { if a == b { @@ -15,17 +15,31 @@ fn solve(input: &str) -> u32 { sum } +fn solve2(input: &str) -> u32 { + solve(input, input.len() / 2) +} + fn main() { let mut input = String::new(); io::stdin().read_to_string(&mut input).unwrap(); - println!("Part 1: {}", solve(input.trim())); + println!("Part 1: {}", solve(input.trim(), 1)); + println!("Part 2: {}", solve2(input.trim())); } #[test] fn part1() { - assert_eq!(3, solve("1122")); - assert_eq!(4, solve("1111")); - assert_eq!(0, solve("1234")); - assert_eq!(9, solve("91212129")); + assert_eq!(3, solve("1122", 1)); + assert_eq!(4, solve("1111", 1)); + assert_eq!(0, solve("1234", 1)); + assert_eq!(9, solve("91212129", 1)); +} + +#[test] +fn part2() { + assert_eq!(6, solve2("1212")); + assert_eq!(0, solve2("1221")); + assert_eq!(4, solve2("123425")); + assert_eq!(12, solve2("123123")); + assert_eq!(4, solve2("12131415")); } |