diff options
author | Justin Worthe <justin.worthe@gmail.com> | 2016-12-07 07:23:23 +0200 |
---|---|---|
committer | Justin Worthe <justin.worthe@gmail.com> | 2016-12-07 07:23:23 +0200 |
commit | 47ef58636e4ccdf48c9d64b045c7bc043e0e256b (patch) | |
tree | bf45b4e94b93003006ab482d972b9ed3d60cd4ab /aoc7/src/main.rs | |
parent | e9905d92248b99f3dc79827f21db448d245326f4 (diff) |
AOC7 part 1
Diffstat (limited to 'aoc7/src/main.rs')
-rw-r--r-- | aoc7/src/main.rs | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/aoc7/src/main.rs b/aoc7/src/main.rs new file mode 100644 index 0000000..e4689d2 --- /dev/null +++ b/aoc7/src/main.rs @@ -0,0 +1,63 @@ +use std::io::BufReader; +use std::io::prelude::*; +use std::fs::File; + +fn main() { + let lines = read_file(); + let mut abba_count = 0; + for line in lines { + let mut in_squares = false; + let mut char_buffer = [' '; 4]; + + let mut chars = line.chars(); + char_buffer[0] = chars.next().unwrap(); + char_buffer[1] = chars.next().unwrap(); + char_buffer[2] = chars.next().unwrap(); + char_buffer[3] = chars.next().unwrap(); + let mut abba_found = is_abba(char_buffer); + + for c in chars { + match c { + '[' => {in_squares = true;}, + ']' => {in_squares = false;}, + _ => {} + } + char_buffer[0] = char_buffer[1]; + char_buffer[1] = char_buffer[2]; + char_buffer[2] = char_buffer[3]; + char_buffer[3] = c; + + if is_abba(char_buffer) { + if in_squares { + abba_found = false; + break; + } else { + abba_found = true; + } + } + } + + if abba_found { + abba_count += 1; + } + } + println!("ABBA_count: {}", abba_count); +} + +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() +} + +fn is_abba(char_buffer: [char; 4]) -> bool { + char_buffer[0] != char_buffer[1] && + char_buffer[0] == char_buffer[3] && + char_buffer[1] == char_buffer[2] && + char_buffer[0] != ']' && + char_buffer[1] != ']' && + char_buffer[0] != '[' && + char_buffer[1] != '[' +} |