summaryrefslogtreecommitdiff
path: root/aoc2
diff options
context:
space:
mode:
authorJustin Worthe <justin.worthe@entelect.co.za>2016-12-02 07:51:59 +0200
committerJustin Worthe <justin.worthe@entelect.co.za>2016-12-02 07:51:59 +0200
commit403f2a2b43d25d30f9b0e41c548017650505f48c (patch)
tree43f710c69a01fc8f8ba10bfb84e56290e66c57b0 /aoc2
Started AOC
Diffstat (limited to 'aoc2')
-rw-r--r--aoc2/Cargo.lock4
-rw-r--r--aoc2/Cargo.toml6
-rw-r--r--aoc2/input.txt5
-rw-r--r--aoc2/src/main.rs91
-rw-r--r--aoc2/target/debug/.fingerprint/aoc2-ee60455f7c5c7282/bin-aoc21
-rw-r--r--aoc2/target/debug/.fingerprint/aoc2-ee60455f7c5c7282/bin-aoc2.json1
-rw-r--r--aoc2/target/debug/.fingerprint/aoc2-ee60455f7c5c7282/dep-bin-aoc2bin0 -> 212 bytes
-rw-r--r--aoc2/target/debug/aoc2.exebin0 -> 2569369 bytes
8 files changed, 108 insertions, 0 deletions
diff --git a/aoc2/Cargo.lock b/aoc2/Cargo.lock
new file mode 100644
index 0000000..b0dbf6e
--- /dev/null
+++ b/aoc2/Cargo.lock
@@ -0,0 +1,4 @@
+[root]
+name = "aoc2"
+version = "0.1.0"
+
diff --git a/aoc2/Cargo.toml b/aoc2/Cargo.toml
new file mode 100644
index 0000000..e4dcc6f
--- /dev/null
+++ b/aoc2/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "aoc2"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@entelect.co.za>"]
+
+[dependencies]
diff --git a/aoc2/input.txt b/aoc2/input.txt
new file mode 100644
index 0000000..ba5a73d
--- /dev/null
+++ b/aoc2/input.txt
@@ -0,0 +1,5 @@
+RUDULRLLUULRURDDRRUDURULLLDRLRLUDDLUDUDDUDRRDUDULDUUULLRULLRLDDLDLDDRLRRRRUDLLDDUULDRLLUDDRRUURLULRRRDLLURRUUDURUDDURLUDDDLUDDUUDUURUDLRDRDRLRDRLDRUDRUUDLRDDRRURDDLRDDRRURDUDDLULLUDRURURRRLRRUDUULULULRRLDLUDUURRLLRUDLLDRDDLRRRULRUDLULDDLLLULDLRUDLLLLRDDLRDRLDRLLRDRRDLRDULULRLLLDRUDRRRUULRUULDRURLUDRURRDLLDLRDLDDDDRRLUDLRRLUUUURDRDDLRRURURRDUULLRLURLURUDDDRDURDUUDRLRLRRLDDLDLDLDDDUDDULURLDDLLRLRRDULUDDLULRLUDDLDLRULUUUDRLDRUDURLUDDRLLRUULDLRRRRDLLLLURULLRDRRUDLUULRRDLLRLRLUDLDDULLDLLRDLDLL
+LLUUUUUUDUDRLRDRDLDURRRLLRRLRURLLUURRLLUDUDLULUURUUURDLUDLDDLULLRDLRUULDLRDUDURLLDDUDUDULLUDDUULLLUULRRRLULRURRDLRUDUDDURRRDRUURDURLLULLRULLDRUULLURLDRDUUDDDDDDRRLDRLRRRLULDDUURRLLLLDRURLURDRDRDURUDUURRDUDUDRLLUUDDRLUDDDRDLDLRLDRURRDLLRULDRLLURURRLUULLRLRRURDDRDRUUURUURUUUDLLRRLUDRLDLRLURLDLUDDUDDDLDUDRRLDLRURULRLLRDUULURRRULDLLLRLDDDUURRRRDULLRURRLULULDLRRUDUDDLRUURDLDUDDUDRRDLRRRDUDUUUDLLDDDDLURLURRRUUULLLULRRLLLLLLULDUUDLRUDRRDLRDUUDUDLLRLDLLRUURDUUURUUUDDLLUUDLULDURLULULUUUDRUDULLURRULRULLRDLDDU
+RLUUURULLDLRLDUDRDURRDUURLLUDDDUULRRRLRLURDDRUULUDULDUUDDDDUDDDDRUDDLDUUDRUDLRRRLLRDDLLLRLLRUULRUULDDRURRLURRLRLULDDRRRDDURDDRDRDULRUDRUUDULRLLULDLRLLDRULRDDRRDDUDLRLLUDRDRRRLUDULRDLRDDURRUUDDRRUDURRUUUDDRRDUDURLUUDUDUURDDDLURLULLUULULURUDUUDRUDULLUUULURDLDUULLDDLLDULRLRLRDUUURUUDLRLDURUDRLDULLUDLDLLRDUURRDUDURLUUUDLLRRULRLULRLDLLURDURRULRLLRRDUDLLRDRRRRDLUUDRUUUDDLRLUDDDDDDRURRRUUURRDLLRURLDDLLDLRRLLLDRRULRRUDLDRDDRRLULURLLUURURURRRRUUUUURUDURLRLLLULULDLLDLRDRRULUDUDRDRRDRDRRDUDLLLRUDRUDDDULRULRRRDRLRUUUURUDURDUUULLULRUDDULDUUDLDURRD
+ULRULDDLDLULLLRRRLRUDDDDDLLDDUDLRRDULUUDRDLRRURDRRLUULRURUDRRULDLLLUDRUUDULULUDDRUDDDRDURRRDRDUUURLRDULUDRDRLDRUDDLLLDRRULUDLUDLDLLRRUDUULULDLDLLUURDLDDLLUUDURLURLLLDRDLDRRLRULUURRDRULRUUURULRRUDDDDLLDLDDLLRRLRRRRDUUDUDLDRDRRURDLRURULDLRDLLLLRUDRLLRDLRLRDURDRUDURRRLRDRDLLRLUDDDDRLRLLDUURRURLUURUULUDLUURDRRUDDLUDUDDDURRDRUDRLRULDULUUUUUUDDUDRUDUUURUDRRDLUDLUUDUULUDURDLDDDLLURRURUUDUDDRRDRLLULULDRLRURRDDDRDUUURDDDRULUDRDDLDURRLDDDLRRRLDDRDURULDLUDLLLURLURRLRRULDLLDDUDRRULDRRRRLURRUULRRRUDLURDLLDLLDULUUDRRLDLLLDRLRUDLUULDLDRUDUDURDRUDRDDDLRLULLUR
+LRLUUURRLRRRRRUURRLLULRLULLDLUDLUDRDDRLDLRLULLURDURLURDLLRLDUUDDURRRRLDLLRULLRLDLLUUDRLDDLLDRULDRLLRURDLRURRUDLULLRURDLURRURUDULLDRLLUUULUDRURRUUDUDULUUULRLDDULDRDLUDDUDDDLRURULLDLLLRLLUURDLRUDLLLLDLLRLRUUUDDRUUUUDLDLRDDURLDURUULLLUUDLLLLDULRRRLLDLDRRDRLUDRUDURLLUDLRLLUDUDRDDDRDLRDLRULUULDRLUDLRLDUURLRRLUDDDUUDDDUDRLDLDUDLURUULLDDDURUUULRLUDLDURUUDRDRURUDDUURDUUUDLLDLDLDURUURLLLLRURUURURULRULLRUDLRRUUUUUDRRLLRDDUURDRDRDDDUDRLURDRRRUDLLLDURDLUUDLLUDDULUUDLDUUULLDRDLRURUURRDURRDLURRRRLLUUULRDULDDLDUURRDLDLLULRRLLUDLDUDLUUL
diff --git a/aoc2/src/main.rs b/aoc2/src/main.rs
new file mode 100644
index 0000000..e3188e7
--- /dev/null
+++ b/aoc2/src/main.rs
@@ -0,0 +1,91 @@
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+
+fn main() {
+ let lines = read_file();
+ let mut current = '5';
+ for line in lines {
+ current = line.chars().fold(current, |current, dir| move_char_2(current, dir));
+ println!("{}", current);
+ }
+}
+
+fn read_file() -> Vec<String> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ file.lines()
+ .map(|line| line.unwrap().trim().to_string())
+ .filter(|line| line.len() > 0)
+ .collect()
+}
+
+
+//assume current in 1-9 range, and char is in UDLR
+fn move_char(current: i32, dir: char) -> i32 {
+ match dir {
+ 'U' => if current <= 3 { current } else { current - 3},
+ 'D' => if current >= 7 { current } else { current + 3},
+ 'L' => if current%3 == 1 { current } else { current - 1},
+ 'R' => if current%3 == 0 { current } else { current + 1},
+ _ => panic!("Bad direction character")
+ }
+}
+
+// 1
+// 2 3 4
+// 5 6 7 8 9
+// A B C
+// D
+fn move_char_2(current: char, dir: char) -> char {
+ match dir {
+ 'U' => match current {
+ '1'|'2'|'4'|'5'|'9' => current,
+ '3' => '1',
+ '6' => '2',
+ '7' => '3',
+ '8' => '4',
+ 'A' => '6',
+ 'B' => '7',
+ 'C' => '8',
+ 'D' => 'B',
+ _ => panic!("Bad current char")
+ },
+ 'D' => match current {
+ 'A'|'D'|'C'|'5'|'9' => current,
+ '1' => '3',
+ '2' => '6',
+ '3' => '7',
+ '4' => '8',
+ '6' => 'A',
+ '7' => 'B',
+ '8' => 'C',
+ 'B' => 'D',
+ _ => panic!("Bad current char")
+ },
+ 'L' => match current {
+ '1'|'2'|'5'|'A'|'D' => current,
+ '3' => '2',
+ '4' => '3',
+ '6' => '5',
+ '7' => '6',
+ '8' => '7',
+ '9' => '8',
+ 'B' => 'A',
+ 'C' => 'B',
+ _ => panic!("Bad current char")
+ },
+ 'R' => match current {
+ '1'|'4'|'9'|'C'|'D' => current,
+ '2' => '3',
+ '3' => '4',
+ '5' => '6',
+ '6' => '7',
+ '7' => '8',
+ '8' => '9',
+ 'A' => 'B',
+ 'B' => 'C',
+ _ => panic!("Bad current char")
+ },
+ _ => panic!("Bad direction character")
+ }
+}
diff --git a/aoc2/target/debug/.fingerprint/aoc2-ee60455f7c5c7282/bin-aoc2 b/aoc2/target/debug/.fingerprint/aoc2-ee60455f7c5c7282/bin-aoc2
new file mode 100644
index 0000000..0dc8be0
--- /dev/null
+++ b/aoc2/target/debug/.fingerprint/aoc2-ee60455f7c5c7282/bin-aoc2
@@ -0,0 +1 @@
+0c5f58e77a9a46ab \ No newline at end of file
diff --git a/aoc2/target/debug/.fingerprint/aoc2-ee60455f7c5c7282/bin-aoc2.json b/aoc2/target/debug/.fingerprint/aoc2-ee60455f7c5c7282/bin-aoc2.json
new file mode 100644
index 0000000..0324547
--- /dev/null
+++ b/aoc2/target/debug/.fingerprint/aoc2-ee60455f7c5c7282/bin-aoc2.json
@@ -0,0 +1 @@
+{"rustc":3005860601515633040,"target":2412896966351654203,"profile":13023446655302672390,"local":{"variant":"MtimeBased","fields":[[1480657613,555107500],[67,58,92,80,114,111,106,92,67,111,109,112,101,116,105,116,105,111,110,115,92,97,100,118,101,110,116,111,102,99,111,100,101,50,48,49,54,92,97,111,99,50,92,116,97,114,103,101,116,92,100,101,98,117,103,92,46,102,105,110,103,101,114,112,114,105,110,116,92,97,111,99,50,45,101,101,54,48,52,53,53,102,55,99,53,99,55,50,56,50,92,100,101,112,45,98,105,110,45,97,111,99,50]]},"features":"None","deps":[]} \ No newline at end of file
diff --git a/aoc2/target/debug/.fingerprint/aoc2-ee60455f7c5c7282/dep-bin-aoc2 b/aoc2/target/debug/.fingerprint/aoc2-ee60455f7c5c7282/dep-bin-aoc2
new file mode 100644
index 0000000..0eb816a
--- /dev/null
+++ b/aoc2/target/debug/.fingerprint/aoc2-ee60455f7c5c7282/dep-bin-aoc2
Binary files differ
diff --git a/aoc2/target/debug/aoc2.exe b/aoc2/target/debug/aoc2.exe
new file mode 100644
index 0000000..0bd13a6
--- /dev/null
+++ b/aoc2/target/debug/aoc2.exe
Binary files differ