From 1ae5233c6848714b09f57ff0dff6d12591de2470 Mon Sep 17 00:00:00 2001 From: dece Date: Sun, 7 Nov 2021 18:10:32 +0100 Subject: [PATCH] 2015 day 8 --- 2015/src/bin/day8.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 2015/src/bin/day8.rs diff --git a/2015/src/bin/day8.rs b/2015/src/bin/day8.rs new file mode 100644 index 0000000..ada4ebf --- /dev/null +++ b/2015/src/bin/day8.rs @@ -0,0 +1,40 @@ +use aoc::input; + +fn main() { + let lines = input::read_lines(); + + // Part 1 + let mut used_mem = 0; + let mut num_chars = 0; + for line in &lines { + let chars = line.chars().collect::>(); + let line_mem = chars.len(); + let mut line_num_chars = line_mem - 2; + let mut index = 1; + while index < line_mem - 1 { + if chars[index] == '\\' { + if chars[index + 1] == '"' || chars[index + 1] == '\\' { + line_num_chars -= 1; + index += 1; + } else if chars[index + 1] == 'x' { + line_num_chars -= 3; + index += 3; + } + } + index += 1; + } + used_mem += line_mem; + num_chars += line_num_chars; + } + println!("{} - {} = {}", used_mem, num_chars, used_mem - num_chars); + + // Part 2 + let mut encoded_size = used_mem; + for line in &lines { + for c in line.chars() { + if c == '\\' || c == '"' { encoded_size += 1 } + } + encoded_size += 2; // enclosing quotes + } + println!("{} - {} = {}", encoded_size, used_mem, encoded_size - used_mem); +}