From dd297f8c1ef88615fee1df562cf53747cc1aae71 Mon Sep 17 00:00:00 2001 From: June McEnroe Date: Sat, 3 Dec 2016 22:43:01 -0500 Subject: Day 2 --- src/bin/day02.rs | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/bin/day02.rs (limited to 'src/bin/day02.rs') diff --git a/src/bin/day02.rs b/src/bin/day02.rs new file mode 100644 index 0000000..c5a7f11 --- /dev/null +++ b/src/bin/day02.rs @@ -0,0 +1,71 @@ +use std::io::{self, Read}; + +#[derive(Debug, Clone, Copy)] +enum Keypad { + K1, K2, K3, + K4, K5, K6, + K7, K8, K9, +} + +impl Keypad { + fn up(self) -> Self { + use Keypad::*; + match self { + K4 => K1, K5 => K2, K6 => K3, + K7 => K4, K8 => K5, K9 => K6, + _ => self, + } + } + + fn down(self) -> Self { + use Keypad::*; + match self { + K1 => K4, K2 => K5, K3 => K6, + K4 => K7, K5 => K8, K6 => K9, + _ => self, + } + } + + fn left(self) -> Self { + use Keypad::*; + match self { + K2 => K1, K3 => K2, + K5 => K4, K6 => K5, + K8 => K7, K9 => K8, + _ => self, + } + } + + fn right(self) -> Self { + use Keypad::*; + match self { + K1 => K2, K2 => K3, + K4 => K5, K5 => K6, + K7 => K8, K8 => K9, + _ => self, + } + } +} + +fn main() { + let mut input = String::new(); + io::stdin().read_to_string(&mut input).unwrap(); + + let mut code = Vec::new(); + let mut key = Keypad::K5; + + for line in input.lines() { + for direction in line.chars() { + key = match direction { + 'U' => key.up(), + 'D' => key.down(), + 'L' => key.left(), + 'R' => key.right(), + _ => panic!("{} is not a direction", direction), + } + } + code.push(key); + } + + println!("Part 1: {:?}", code); +} -- cgit 1.4.1 href='/src/log/link.sh?id=a21e0e852a72060c54b00404a67f4cee8c3dceb5&showmsg=1&follow=1'>link.sh (unfollow)
Commit message (Collapse)Author
2021-01-13Match [] as Operator in C lexerJune McEnroe
2021-01-13Fix C lexer to require a digit in a float literalJune McEnroe
Otherwise ".l" is matched as Number.
2021-01-13Support long double in c.shJune McEnroe
2021-01-13Update Terminal.app coloursJune McEnroe
God what is this garbage I only changed one colour.
2021-01-13Increase dark white brightness slightlyJune McEnroe
2021-01-13Add hilex example to htagml manualJune McEnroe
2021-01-12Style causal.agency like bin HTMLJune McEnroe
2021-01-12Avoid matching tag text inside HTML elementsJune McEnroe
2021-01-12Use hilex for up -hJune McEnroe
2021-01-12Use hilex for bin HTMLJune McEnroe
2021-01-12Don't output a pre in hilex by defaultJune McEnroe
2021-01-12Move hilex out of hilex directoryJune McEnroe
2021-01-12Consolidate hilex formatters into hilex.cJune McEnroe
2021-01-12Remove hacky tagging from hilexJune McEnroe
God that makes the lexers so much simpler.
2021-01-12Add htagml -iJune McEnroe
2021-01-12Render tag index in HTMLJune McEnroe
2021-01-12Add htagml -xJune McEnroe
2021-01-12Prevent matching the same tag twiceJune McEnroe
2021-01-12Process htagml file line by lineJune McEnroe
This simplifies some things, adds support for line number tag definitions, and should enable combining htagml with other preprocessors in the future.
2021-01-12Split fields by tab onlyJune McEnroe
Also don't fail hard on non-forward-search definitions.
2021-01-12List both Makefile and html.sh under README.7June McEnroe
2021-01-12Add htagml exampleJune McEnroe
2021-01-12Use mandoc and htagml for bin htmlJune McEnroe
2021-01-12Add htagmlJune McEnroe
2021-01-12Replace causal.agency with a simple mdoc pageJune McEnroe
2021-01-11Publish "Using vi"June McEnroe
2021-01-11Enable diff.colorMovedJune McEnroe
2021-01-10Set less search case-insensitiveJune McEnroe
2021-01-10Set EXINITJune McEnroe
neovim is laggy as hell in my OpenBSD VM, so I switched to vi so I could type without getting frustrated.
2021-01-09Add c -t flag to print expression typeJune McEnroe
Also add missing float case.
2021-01-05Update taglineJune McEnroe