From 7d95cb7cef2105f441e3e18248b389928b62c7f9 Mon Sep 17 00:00:00 2001 From: Leah Neukirchen Date: Mon, 3 Dec 2018 18:10:24 +0100 Subject: day02 --- day02.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 day02.rs (limited to 'day02.rs') diff --git a/day02.rs b/day02.rs new file mode 100644 index 0000000..3c5b9b5 --- /dev/null +++ b/day02.rs @@ -0,0 +1,33 @@ +use std::fs::File; +use std::io::{BufRead, BufReader}; + +fn appears(s: &str, n: usize) -> bool { + s.chars().any(|c| s.matches(c).count() == n) +} + +fn same_but_one(s: &str, t: &str) -> Option { + let mut x = s.chars().zip(t.chars()).enumerate().filter(|(_, (a,b))| a != b); + match (x.next(), x.next()) { + (Some(m), None) => Some(format!("{}{}", &s[..m.0], &s[m.0+1..])), + _ => None + } +} + +fn main() { + let f = File::open("day02").unwrap(); + + let v: Vec<_> = BufReader::new(&f).lines().map(|l| l.unwrap()).collect(); + + println!("{}", + v.iter().filter(|s| appears(s, 2)).count() * + v.iter().filter(|s| appears(s, 3)).count()); + + 'outer: for x in &v { + for y in &v { + if let Some(s) = same_but_one(&x, &y) { + println!("{}", s); + break 'outer; + } + } + } +} -- cgit 1.4.1