summary refs log tree commit diff homepage
path: root/2017/src
diff options
context:
space:
mode:
Diffstat (limited to '2017/src')
-rw-r--r--2017/src/bin/day11.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/2017/src/bin/day11.rs b/2017/src/bin/day11.rs
new file mode 100644
index 0000000..174f950
--- /dev/null
+++ b/2017/src/bin/day11.rs
@@ -0,0 +1,42 @@
+use std::io::{self, Read};
+
+#[derive(Debug, Clone, Copy)]
+struct Hex(i32, i32, i32);
+
+impl Hex {
+    fn mov(self, dir: &str) -> Self {
+        let Hex(x, y, z) = self;
+        match dir {
+            "n"  => Hex(x, y + 1, z - 1),
+            "ne" => Hex(x + 1, y, z - 1),
+            "se" => Hex(x + 1, y - 1, z),
+            "s"  => Hex(x, y - 1, z + 1),
+            "sw" => Hex(x - 1, y, z + 1),
+            "nw" => Hex(x - 1, y + 1, z),
+            _ => unimplemented!(),
+        }
+    }
+}
+
+fn solve1(input: &str) -> i32 {
+    let mut hex = Hex(0, 0, 0);
+    for dir in input.split(',') {
+        hex = hex.mov(dir);
+    }
+    (hex.0.abs() + hex.1.abs() + hex.2.abs()) / 2
+}
+
+fn main() {
+    let mut input = String::new();
+    io::stdin().read_to_string(&mut input).unwrap();
+
+    println!("Part 1: {}", solve1(input.trim()));
+}
+
+#[test]
+fn part1() {
+    assert_eq!(3, solve1("ne,ne,ne"));
+    assert_eq!(0, solve1("ne,ne,sw,sw"));
+    assert_eq!(2, solve1("ne,ne,s,s"));
+    assert_eq!(3, solve1("se,sw,se,sw,sw"));
+}
Fixed user mention detectionZachery Notz 2020-05-23Improved regex so that TELLRAW templates can use variables more than onceZachery Notz 2020-04-29backwards compat with new optiondestruc7i0n 2020-04-29add the ability to handle webhook messagesdestruc7i0n 2020-04-19Fixed tellraw components not being encoded properlyBen Landin 2020-02-11Update README.mddestruc7i0n 2020-02-05Precedencedestruc7i0n 2020-02-05Allow specification of the channel name rather than iddestruc7i0n 2020-02-05Some more cleanupdestruc7i0n 2020-02-05More config handlingdestruc7i0n 2020-02-04Update typesdestruc7i0n 2020-02-04Docs updatesdestruc7i0n 2020-02-04Code cleanupdestruc7i0n 2020-02-04Refactor and rebuild to TypeScriptdestruc7i0n 2019-02-11Local file supportdestruc7i0n 2018-11-11Let's make this usable again!destruc7i0n 2018-02-23Allow configurable discord formatArcensoth 2018-02-23Revert example tellraw format to mimic the originalArcensoth 2018-02-23Update readme with new tellraw config optionArcensoth 2018-02-23Allow configurable tellraw formatArcensoth 2018-02-23Allow config file to be passed as a parameterArcensoth