[2016][rust] organize files
change znyqvsryklsnqxyxzypzuuznvnnoxuwm
commit 9a9fcefbcdbaa62c4e0c1fbc9a39e45d4170cf49
author Alpha Chen <alpha.chen@gmail.com>
date
parent urvtylyq
diff --git a/2016/rust/src/day_01.rs b/2016/rust/src/day_01.rs
new file mode 100644
index 0000000..b4597da
--- /dev/null
+++ b/2016/rust/src/day_01.rs
@@ -0,0 +1,43 @@
+use std::collections::HashSet;
+use std::f32::consts::PI;
+
+pub fn solve(input: &str) -> String {
+  let mut turtle = (-PI / 2.0, (0, 0));
+  let mut visited: HashSet<(i32, i32)> = HashSet::new();
+
+  for step in input.split(", ") {
+    let mut chars = step.chars();
+    let dir = chars.next().unwrap();
+    let blocks = chars.collect::<String>().parse::<i32>().unwrap();
+
+    turtle.0 += match dir {
+      'R' => PI / 2.0,
+      'L' => -PI / 2.0,
+      _ => {
+        unreachable!();
+      }
+    };
+
+    for _ in 0..blocks {
+      let movement = turtle.0.sin_cos();
+      (turtle.1).0 += movement.1 as i32;
+      (turtle.1).1 += movement.0 as i32;
+
+      if visited.contains(&turtle.1) {
+        return ((turtle.1).0.abs() + (turtle.1).1.abs()).to_string()
+      } else {
+        visited.insert(turtle.1);
+      }
+    }
+  }
+
+  ((turtle.1).0.abs() + (turtle.1).1.abs()).to_string()
+}
+
+#[test]
+fn test_solve() {
+  // assert_eq!(solve("R2, L3"), "5".to_string());
+  // assert_eq!(solve("R2, R2, R2"), "2".to_string());
+  // assert_eq!(solve("R5, L5, R5, R3"), "12".to_string());
+  assert_eq!(solve("R8, R4, R4, R8"), "4".to_string());
+}
diff --git a/2016/rust/src/lib.rs b/2016/rust/src/lib.rs
new file mode 100644
index 0000000..83a7f75
--- /dev/null
+++ b/2016/rust/src/lib.rs
@@ -0,0 +1 @@
+pub mod day_01;
diff --git a/2016/rust/src/main.rs b/2016/rust/src/main.rs
index 07ea0d4..3742d65 100644
--- a/2016/rust/src/main.rs
+++ b/2016/rust/src/main.rs
@@ -1,52 +1,12 @@
-use std::collections::HashSet;
 use std::io;
 use std::io::Read;
-use std::f32::consts::PI;
 
-fn solve(input: &str) -> String {
-  let mut turtle = (-PI / 2.0, (0, 0));
-  let mut visited: HashSet<(i32, i32)> = HashSet::new();
-
-  for step in input.split(", ") {
-    let mut chars = step.chars();
-    let dir = chars.next().unwrap();
-    let blocks = chars.collect::<String>().parse::<i32>().unwrap();
-
-    turtle.0 += match dir {
-      'R' => PI / 2.0,
-      'L' => -PI / 2.0,
-      _ => {
-        unreachable!();
-      }
-    };
-
-    for _ in 0..blocks {
-      let movement = turtle.0.sin_cos();
-      (turtle.1).0 += movement.1 as i32;
-      (turtle.1).1 += movement.0 as i32;
-
-      if visited.contains(&turtle.1) {
-        return ((turtle.1).0.abs() + (turtle.1).1.abs()).to_string()
-      } else {
-        visited.insert(turtle.1);
-      }
-    }
-  }
-
-  ((turtle.1).0.abs() + (turtle.1).1.abs()).to_string()
-}
-
-#[test]
-fn test_solve() {
-  // assert_eq!(solve("R2, L3"), "5".to_string());
-  // assert_eq!(solve("R2, R2, R2"), "2".to_string());
-  // assert_eq!(solve("R5, L5, R5, R3"), "12".to_string());
-  assert_eq!(solve("R8, R4, R4, R8"), "4".to_string());
-}
+extern crate advent_of_code_2016;
+use advent_of_code_2016::*;
 
 fn main() {
   let mut input = String::new();
   io::stdin().read_to_string(&mut input).ok();
 
-  println!("{}", solve(&input));
+  println!("{}", day_01::solve(&input));
 }