[2017][rust][15.x] extract, clean up code
change plyqzmtvkvourutzlomwxpoqrmrrzpvx
commit 968012f1dcd4214e6f93abd722ceeb4a70522ab7
author Alpha Chen <alpha.chen@gmail.com>
date
parent zruyupzx
diff --git a/2017/rust/src/day_05.rs b/2017/rust/src/day_05.rs
index a972da3..6ede252 100644
--- a/2017/rust/src/day_05.rs
+++ b/2017/rust/src/day_05.rs
@@ -2,6 +2,7 @@ use std::collections::HashMap;
 use std::collections::hash_map::Entry;
 use failure::*;
 
+#[allow(dead_code)]
 pub fn solve(input: &str) -> Result<String, Error> {
     let mut jumps: HashMap<isize, isize> = input
         .trim()
diff --git a/2017/rust/src/day_15.rs b/2017/rust/src/day_15.rs
new file mode 100644
index 0000000..8357aeb
--- /dev/null
+++ b/2017/rust/src/day_15.rs
@@ -0,0 +1,28 @@
+use failure::*;
+
+pub fn solve(_: &str) -> Result<String, Error> {
+    let a = Generator{value: 679, factor: 16807};
+    let b = Generator{value: 771, factor: 48271};
+
+    let answer = a.filter(|a| a % 4 == 0).zip(b.filter(|b| b % 8 == 0))
+        .take(5_000_000)
+        .filter(|&(a,b)| a & 0b1111111111111111 == b & 0b1111111111111111)
+        .count();
+    Ok(answer.to_string())
+}
+
+struct Generator {
+    value: usize,
+    factor: usize,
+}
+
+impl Iterator for Generator {
+    type Item = usize;
+
+    fn next(&mut self) -> Option<Self::Item> {
+        self.value *= self.factor;
+        self.value %= 2147483647;
+        Some(self.value)
+    }
+}
+
diff --git a/2017/rust/src/main.rs b/2017/rust/src/main.rs
index 90c3624..bc2f8e2 100644
--- a/2017/rust/src/main.rs
+++ b/2017/rust/src/main.rs
@@ -13,47 +13,19 @@ mod day_02;
 mod day_03;
 mod day_04;
 mod day_05;
-
-struct Generator {
-    value: usize,
-    factor: usize,
-}
-
-impl Iterator for Generator {
-    type Item = usize;
-
-    fn next(&mut self) -> Option<Self::Item> {
-        self.value *= self.factor;
-        self.value %= 2147483647;
-        Some(self.value)
-    }
-}
+mod day_15;
 
 fn main() {
-    let mut a = Generator{value: 679, factor: 16807};
-    let mut b = Generator{value: 771, factor: 48271};
-
-    let answer = a.filter(|a| a % 4 == 0).zip(b.filter(|b| b % 8 == 0))
-        .take(5_000_000)
-        .filter(|&(a,b)| a & 0b1111111111111111 == b & 0b1111111111111111)
-        .count();
-    println!("{}", answer);
-
-// p a.zip(b).take(40_000_000).with_index.count {|(a,b),i|
-  // p i if i % 1_000_000 == 0
-  // a.to_s(2)[-16,16] == b.to_s(2)[-16,16]
-// }
-
-    // if let Err(e) = run() {
-    //     eprintln!("{}", e);
-    // }
+    if let Err(e) = run() {
+        eprintln!("{}", e);
+    }
 }
 
 fn run() -> Result<(), Error> {
     let mut input = String::new();
     io::stdin().read_to_string(&mut input)?;
 
-    let solution = day_05::solve(&input)?;
+    let solution = day_15::solve(&input)?;
     println!("{}", solution);
 
     Ok(())