From 4bebe8110ed800194e978832a507b051f49ede73 Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Mon, 3 Dec 2018 23:44:18 +0000 Subject: [PATCH] Day 2 --- 02/part1.rs | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 02/part2.rs | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 02/part1.rs create mode 100644 02/part2.rs diff --git a/02/part1.rs b/02/part1.rs new file mode 100644 index 0000000..8bab7e1 --- /dev/null +++ b/02/part1.rs @@ -0,0 +1,48 @@ +use std::collections::HashMap; +use std::error::Error; +use std::fs::File; +use std::io::BufReader; +use std::io::prelude::*; + +fn main() -> std::io::Result<()> { + let file = match File::open("input") { + Err(why) => panic!("couldn't open input: {}", Error::description(&why)), + Ok(file) => file, + }; + + let reader = BufReader::new(file); + let lines = reader.lines(); + + for result in lines { + let l = result.unwrap(); + let mut freq = HashMap::new(); + let mut is2 = false; + let mut is3 = false; + + for ch in l.chars() { + let count = freq.entry(ch).or_insert(0); + *count += 1; + } + + for (_ch, count) in freq { + if count == 2 { + is2 = true; + } + if count == 3 { + is3 = true; + } + } + + if is2 { + count2+=1; + } + + if is3 { + count3+=1; + } + } + + println!("2: {} 3: {} 2*3: {}", count2, count3, count2 * count3); + + Ok(()) +} diff --git a/02/part2.rs b/02/part2.rs new file mode 100644 index 0000000..35546ce --- /dev/null +++ b/02/part2.rs @@ -0,0 +1,33 @@ +use std::collections::HashMap; +use std::error::Error; +use std::fs::File; +use std::io::BufReader; +use std::io::prelude::*; + +fn main() -> std::io::Result<()> { + let mut f = File::open("input")?; + let mut data = String::new(); + + f.read_to_string(&mut data)?; + + for lineA in data.lines() { + for lineB in data.lines() { + let mut a = lineA.chars(); + let mut b = lineB.chars(); + let mut diffCount = 0; + let mut pairs = a.zip(b); + + for (aChar, bChar) in pairs { + if aChar != bChar { + diffCount += 1; + } + } + + if diffCount == 1 { + println!("lineA: {} lineB: {}", lineA, lineB); + } + } + } + + Ok(()) +}