From 69ea772f12d6be3d13d0a26caa90a5a94d547951 Mon Sep 17 00:00:00 2001 From: LongHairedHacker Date: Tue, 14 Dec 2021 14:43:16 +0100 Subject: [PATCH] Slow part 1 for day 14 --- inputs/day14.txt | 102 ++++++++++++++++++++++++++++++++++++++++++++++ inputs/sample.txt | 37 ++++++++--------- src/bin/day14.rs | 63 ++++++++++++++++++++++++++++ 3 files changed, 182 insertions(+), 20 deletions(-) create mode 100644 inputs/day14.txt create mode 100644 src/bin/day14.rs diff --git a/inputs/day14.txt b/inputs/day14.txt new file mode 100644 index 0000000..3a2c7ec --- /dev/null +++ b/inputs/day14.txt @@ -0,0 +1,102 @@ +KOKHCCHNKKFHBKVVHNPN + +BN -> C +OS -> K +BK -> C +KO -> V +HF -> K +PS -> B +OK -> C +OC -> B +FH -> K +NV -> F +HO -> H +KK -> H +CV -> P +SC -> C +FK -> N +VV -> F +FN -> F +KP -> O +SB -> O +KF -> B +CH -> K +VF -> K +BH -> H +KV -> F +CO -> N +PK -> N +NH -> P +NN -> C +PP -> H +SH -> N +VO -> O +NC -> F +BC -> B +HC -> H +FS -> C +PN -> F +CK -> K +CN -> V +HS -> S +CB -> N +OF -> B +OV -> K +SK -> S +HP -> C +SN -> P +SP -> B +BP -> C +VP -> C +BS -> K +FV -> F +PH -> P +FF -> P +VK -> F +BV -> S +VB -> S +BF -> O +BB -> H +OB -> B +VS -> P +KB -> P +SF -> N +PF -> S +HH -> P +KN -> K +PC -> B +NB -> O +VC -> P +PV -> H +KH -> O +OP -> O +NF -> K +HN -> P +FC -> H +PO -> B +OH -> C +ON -> N +VN -> B +VH -> F +FO -> B +FP -> B +BO -> H +CC -> P +CS -> K +NO -> V +CF -> N +PB -> H +KS -> P +HK -> S +HB -> K +HV -> O +SV -> H +CP -> S +NP -> N +FB -> B +KC -> V +NS -> P +OO -> V +SO -> O +NK -> K +SS -> H diff --git a/inputs/sample.txt b/inputs/sample.txt index 282114c..b5594dd 100644 --- a/inputs/sample.txt +++ b/inputs/sample.txt @@ -1,21 +1,18 @@ -6,10 -0,14 -9,10 -0,3 -10,4 -4,11 -6,0 -6,12 -4,1 -0,13 -10,12 -3,4 -3,0 -8,4 -1,10 -2,14 -8,10 -9,0 +NNCB -fold along y=7 -fold along x=5 +CH -> B +HH -> N +CB -> H +NH -> C +HB -> C +HC -> B +HN -> C +NN -> C +BH -> H +NC -> B +NB -> B +BN -> B +BB -> N +BC -> B +CC -> N +CN -> C diff --git a/src/bin/day14.rs b/src/bin/day14.rs new file mode 100644 index 0000000..c4fd87f --- /dev/null +++ b/src/bin/day14.rs @@ -0,0 +1,63 @@ +use std::collections::HashMap; +use std::error::Error; +use std::fs::File; +use std::io::{self, BufRead}; +use std::vec::Vec; + +fn main() -> Result<(), Box> { + let file = File::open("inputs/day14.txt")?; + let mut lines = io::BufReader::new(file).lines(); + + let mut polymer_template: Vec = lines.next().unwrap().unwrap().chars().collect(); + lines.next(); + + let mut rules: HashMap<(char, char), char> = HashMap::new(); + while let Some(Ok(line)) = lines.next() { + if line == "" { + break; + } + + let mut parts = line.split(" -> "); + let pair = parts.next().unwrap(); + let new = parts.next().unwrap(); + + rules.insert( + (pair.chars().nth(0).unwrap(), pair.chars().nth(1).unwrap()), + new.chars().nth(0).unwrap(), + ); + } + + for i in 0..40 { + let mut next_step: Vec = Vec::new(); + next_step.push(polymer_template[0]); + for pair in polymer_template.windows(2) { + //next_step.push(pair[0]); + if rules.contains_key(&(pair[0], pair[1])) { + next_step.push(rules[&(pair[0], pair[1])]); + } + next_step.push(pair[1]); + } + + polymer_template = next_step; + + println!("{} : {}", i, polymer_template.len()); + } + + let mut dist: HashMap = HashMap::new(); + for c in polymer_template.iter() { + let count = dist.get(c).unwrap_or_else(|| &0).clone(); + dist.insert(*c, count + 1); + } + + let mut counts: Vec<&usize> = dist.values().collect(); + counts.sort(); + + println!( + "Answer1: {}", + *counts.last().unwrap() - *counts.first().unwrap() + ); + + println!("Answer2: {}", 0); + + Ok(()) +}