From 7117b5f76bbe8cbeb72eb7e105d1d1bccc4d6ba7 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Tue, 6 Dec 2016 19:28:51 -0500 Subject: Day 6 part 2 I still want to refactor this though. --- src/bin/day06.rs | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/bin/day06.rs b/src/bin/day06.rs index 72ee658..7f8a516 100644 --- a/src/bin/day06.rs +++ b/src/bin/day06.rs @@ -9,7 +9,7 @@ fn frequencies(chars: &[char]) -> HashMap { map } -fn solve(input: &str) -> String { +fn solve1(input: &str) -> String { let len = input.find('\n').unwrap_or(input.len()); let mut columns = vec![Vec::new(); len]; @@ -28,16 +28,35 @@ fn solve(input: &str) -> String { .collect() } +fn solve2(input: &str) -> String { + let len = input.find('\n').unwrap_or(input.len()); + let mut columns = vec![Vec::new(); len]; + + for line in input.lines() { + for (i, ch) in line.chars().enumerate() { + columns[i].push(ch); + } + } + + columns.into_iter() + .map(|column| frequencies(&column)) + .map(IntoIterator::into_iter) + .map(|iter| iter.min_by_key(|&(_, v)| v)) + .map(Option::unwrap) + .map(|(ch, _)| ch) + .collect() +} + fn main() { let mut input = String::new(); io::stdin().read_to_string(&mut input).unwrap(); - println!("Part 1: {}", solve(&input)); + println!("Part 1: {}", solve1(&input)); + println!("Part 2: {}", solve2(&input)); } -#[test] -fn part1() { - let input = " +#[cfg(test)] +const TEST_INPUT: &'static str = " eedadn drvtee eandsr @@ -55,5 +74,14 @@ vrdear dvrsen enarar "; - assert_eq!("easter", solve(input.trim())); + + +#[test] +fn part1() { + assert_eq!("easter", solve1(TEST_INPUT.trim())); +} + +#[test] +fn part2() { + assert_eq!("advent", solve2(TEST_INPUT.trim())); } -- cgit 1.4.1 f='/src/log/music?id=147e590df54f9afbf56b46cd4ab29b2d0bcaa045&follow=1'>music (unfollow)
Commit message (Expand)Author
2018-04-03Reverse new music orderJune McEnroe
2018-04-03Add FAUVE, CocoRosieJune McEnroe
2018-04-03Add House of LeavesJune McEnroe
2018-04-03Add ChromaticsJune McEnroe
2018-04-03Add those new Arcade Fire singlesJune McEnroe
2018-04-03Add SermonJune McEnroe
2018-04-03Add Pools of LightJune McEnroe
2018-04-03Add SteroidsJune McEnroe
2018-04-03Add A Common TruthJune McEnroe
2018-04-03Add new Colin Stetson albumJune McEnroe
2018-04-03Add ForgetJune McEnroe
2018-04-03Add ArcaJune McEnroe
2018-04-03Add new DMST and Joni VoidJune McEnroe
2018-04-03Add The Body LoversJune McEnroe
2018-04-03Add some albums from recentlyJune McEnroe
2018-04-03Add Saltland Light of MercyJune McEnroe
2018-04-03Add Jessica Moss GlaciersJune McEnroe
2018-04-03Add BNNY RBBTJune McEnroe
2018-04-03Add DepthsJune McEnroe
2018-04-03Add new Saltland previewJune McEnroe
2018-04-03Add BenjiJune McEnroe
2018-04-03Add Mouth MoodsJune McEnroe
2018-04-03Add Those Who Walk AwayJune McEnroe
2018-04-03Add Some TunesJune McEnroe
2018-04-03Add Pas pire popJune McEnroe
2018-04-03Add I Give You PowerJune McEnroe
2018-04-03Add Jenny GoGoJune McEnroe
2018-04-03Add KKB Fish BowlJune McEnroe
2018-04-03Add new Avec le soleil album previewJune McEnroe
2018-04-03Add Julien Baker as recent new musicJune McEnroe
2018-04-03Add recent new musicJune McEnroe