From f870f6547e912fc4f5ab3a9e50dea3c95f806958 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Mon, 4 Dec 2017 00:35:06 -0500 Subject: Day 4, part 2 That ugly sort map though. --- 2017/src/bin/day04.rs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/2017/src/bin/day04.rs b/2017/src/bin/day04.rs index 2d6ca52..784a246 100644 --- a/2017/src/bin/day04.rs +++ b/2017/src/bin/day04.rs @@ -5,7 +5,23 @@ fn solve1(input: &str) -> u32 { let mut valid = 0; for phrase in input.lines() { let words = phrase.split_whitespace(); - if words.clone().count() == words.collect::>().len() { + if words.clone().count() == words.collect::>().len() { + valid += 1; + } + } + valid +} + +fn solve2(input: &str) -> u32 { + let mut valid = 0; + for phrase in input.lines() { + let count = phrase.split_whitespace().count(); + let words = phrase.split_whitespace() + .map(str::chars) + .map(Iterator::collect::>) + .map(|mut v| { v.sort(); v }) + .collect::>(); + if count == words.len() { valid += 1; } } @@ -17,6 +33,7 @@ fn main() { io::stdin().read_to_string(&mut input).unwrap(); println!("Part 1: {}", solve1(&input)); + println!("Part 2: {}", solve2(&input)); } #[test] @@ -25,3 +42,12 @@ fn part1() { assert_eq!(0, solve1("aa bb cc dd aa")); assert_eq!(1, solve1("aa bb cc dd aaa")); } + +#[test] +fn part2() { + assert_eq!(1, solve2("abcde fghij")); + assert_eq!(0, solve2("abcde xyz ecdab")); + assert_eq!(1, solve2("a ab abc abd abf abj")); + assert_eq!(1, solve2("iiii oiii ooii oooi oooo")); + assert_eq!(0, solve2("oiii ioii iioi iiio")); +} -- cgit 1.4.1