From b3d780a4dba7edc1cbd151528d36761e936c4ce8 Mon Sep 17 00:00:00 2001 From: Leah Neukirchen Date: Thu, 6 Dec 2018 15:57:53 +0100 Subject: day05 --- day05.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 day05.rs (limited to 'day05.rs') diff --git a/day05.rs b/day05.rs new file mode 100644 index 0000000..ea6e919 --- /dev/null +++ b/day05.rs @@ -0,0 +1,31 @@ +use std::fs::File; +use std::io::prelude::*; + +fn react(s: &mut String) -> usize { + while let Some(pos) = (0..s.len() - 1).find(|i| { + (s.as_bytes()[*i] as i32 - s.as_bytes()[*i + 1] as i32).abs() == 32 + }) { + s.replace_range(pos..pos + 2, ""); + } + return s.len(); +} + +fn main() { + let mut f = File::open("day05").unwrap(); + + let mut s = String::new(); + f.read_to_string(&mut s).unwrap(); + s.pop(); + + println!("{}", react(&mut s.clone())); + + println!("{}", + (65u8..65u8 + 27) + .map(|c| { + let mut t = s.clone(); + t.retain(|b| b != (c as char) && b != (c + 32u8) as char); + react(&mut t) + }) + .min() + .unwrap()); +} -- cgit 1.4.1