[2016][rust][6.0]
change ptxxrssysztpmwrqsyymxnzsmyqxvstx
commit cdb3528818a3dd6b2b7ed99da7d65787a111d132
author Alpha Chen <alpha.chen@gmail.com>
date
parent lnnsyxlq
diff --git a/2016/rust/src/day_06.rs b/2016/rust/src/day_06.rs
new file mode 100644
index 0000000..aa00f90
--- /dev/null
+++ b/2016/rust/src/day_06.rs
@@ -0,0 +1,44 @@
+use std::collections::HashMap;
+
+use errors::*;
+
+pub fn solve(input: &str) -> Result<String> {
+  let mut counters = HashMap::new();
+  for line in input.lines() {
+    for (i, c) in line.chars().enumerate() {
+      let mut col = counters.entry(i).or_insert_with(|| HashMap::new());
+      *col.entry(c).or_insert(0) += 1
+    }
+  }
+
+  let mut counters: Vec<_> = counters.iter().collect();
+  counters.sort_by_key(|&(idx, _)| idx);
+  Ok(counters.iter()
+    .map(|&(_, col)| {
+      let mut v: Vec<_> = col.iter().collect();
+      v.sort_by_key(|&(_, count)| count);
+      v.iter().map(|&(chr, _)| *chr).last().unwrap()
+    })
+    .collect())
+}
+
+#[test]
+fn test_solve() {
+  let input = "eedadn
+drvtee
+eandsr
+raavrd
+atevrs
+tsrnev
+sdttsa
+rasrtv
+nssdts
+ntnada
+svetve
+tesnvt
+vntsnd
+vrdear
+dvrsen
+enarar";
+  assert_eq!(solve(input).unwrap(), "easter".to_string());
+}
diff --git a/2016/rust/src/lib.rs b/2016/rust/src/lib.rs
index cef1563..b9cc037 100644
--- a/2016/rust/src/lib.rs
+++ b/2016/rust/src/lib.rs
@@ -11,3 +11,4 @@ pub mod day_02;
 pub mod day_03;
 pub mod day_04;
 pub mod day_05;
+pub mod day_06;
diff --git a/2016/rust/src/main.rs b/2016/rust/src/main.rs
index 99c3f8f..ad71ce8 100644
--- a/2016/rust/src/main.rs
+++ b/2016/rust/src/main.rs
@@ -10,7 +10,7 @@ fn main() {
     let mut input = String::new();
     io::stdin().read_to_string(&mut input).ok();
 
-    let solution = day_05::solve(&input)?;
+    let solution = day_06::solve(&input)?;
     println!("{}", solution);
 
     Ok(())