summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inputs/2.txt250
-rw-r--r--src/bin/day_2.rs43
2 files changed, 289 insertions, 4 deletions
diff --git a/inputs/2.txt b/inputs/2.txt
new file mode 100644
index 0000000..1edb865
--- /dev/null
+++ b/inputs/2.txt
@@ -0,0 +1,250 @@
+krdmtuqjmwfoevnadixyclzspv
+yrdmtuqjiwfoevnabfxyclzsph
+kqjvtuqjgwfoevnabixyclzsph
+krdmtuqjgwjoevnaolxyclzsph
+krdmtnqjgwfoevnabiiyxlzsph
+lrymtuqjgwhoevnabixyclzsph
+krdmguqjgwfoevnabixkclzsah
+krdmtuqjgwfoevnibinyclzdph
+krdmtucjgwfoevnabhxyclzspv
+krdmtuqjgwfoevtabixyulzsuh
+krdmtuqqgwfoevnabixdblzsph
+krdmtuqjawfsevnabiyyclzsph
+krdmtuqjgwfoevnabzxccldsph
+krdmtcqegwfhevnabixyclzsph
+krdmtuqjgwforvnaxixycgzsph
+krdmtuqjgwfoqvnaxixyclzskh
+krdmtutjgwfoevyajixyclzsph
+krdmtuqmgwfoevnabixycxzspc
+krdptuqjgwhoevkabixyclzsph
+krdttuqjhwfoevnabixyclzspa
+krdmtuqjgwfoevnabibyhnzsph
+krdmtuqjywfoevntbidyclzsph
+krdmtojdgwfoevnabixyclzsph
+krdmtuqjgpfuevnauixyclzsph
+krdmtoqjgwfrevjabixyclzsph
+krdmtuqjgwfoyvndbixyclzyph
+krdmtxqjgwfomvnayixyclzsph
+crdmtuqjgwfoevnabixyoxzsph
+krdmtpqjgwfdevnabixycqzsph
+krdmtuqjgwfoevuabfxsclzsph
+krdmtuqjgwfoevnybixycdzskh
+krdmtusjgwfoevnabixxclzdph
+krdmtuqjgwfoevnaboxyglzjph
+zrdmtuqjgrfoevnalixyclzsph
+krdmtuqjclfoevnabixyclzsih
+kqdmtlqjgwfoevnabtxyclzsph
+krdmtuqggwpoevnabixyclzlph
+krdmtuqjgwfobwnrbixyclzsph
+krdmtuqjgwfoevwabkxycnzsph
+kldmtuqjgwfogvyabixyclzsph
+krdmtuqvgwfoevnabixtcrzsph
+krdmtuqjgwroevnabixyrlzspw
+krdmtuqjgjfoevnabixyelzrph
+krdmtuqjgffoevnaaixyclzspa
+krdmtuqjgwfoevxabifywlzsph
+krdmtuqjgwfoevlabixycrzsrh
+krdmtuqjgwfpevnabixocqzsph
+krdmtuqjgwfoevdabixycnhsph
+krdmtmqjgwfoevnajixyclvsph
+krdmtuqjjvfoevnabgxyclzsph
+krzmtuqjgwfoevnabioyckzsph
+kodmtwqjgwfoevnabieyclzsph
+ehdmthqjgwfoevnabixyclzsph
+krdmtuqjxwioevnabixyclbsph
+grdmkutjgwfoevnabixyclzsph
+krdutuqjgwfoebnabixaclzsph
+krdmtuqjgwfoebnabixyclcjph
+krdmteqjgwfoevnlbixycizsph
+krdmtegjgwhoevnabixyclzsph
+krdmtuqjgwfdrvnabixbclzsph
+krdmtuqjgyfoevidbixyclzsph
+krdmtubjawfoevnabixyclzuph
+krdmtuqjgwfoavjabixyclzssh
+krdmtuqjgwfoeonabixyclzsvo
+vrdmtuqjgwffevnabixpclzsph
+krdmtuqonwfoevnabixycfzsph
+krdmtumjgwfpevnubixyclzsph
+krdmtutjgwfoevnaciyyclzsph
+krdrtuqjgwfoevnwbixyglzsph
+krdmtuqjgwfoevbabixyclesdh
+krdmtuqcgwfoevnabixyqdzsph
+krdmtuqjgwfogvnabrxycezsph
+krdmujqkgwfoevnabixyclzsph
+krdmtuqjgtooevnabixyclzzph
+jrdntuqjgwfoevnabixyclrsph
+krdmtuqjgzfoevkebixyclzsph
+krdmtuqjgwfosvnaeixyclztph
+krdmtuqjgwfoevzabixydlzaph
+krdmtuqzgwfoavnabiqyclzsph
+krdmtuqvgwfoevnabixycwzspv
+krdmvuqjgwteevnabixyclzsph
+krdmtujjgwfoevgybixyclzsph
+kydmtuqjgwfoeunacixyclzsph
+krdmtuqjgifoqvnabicyclzsph
+krnltiqjgwfoevnabixyclzsph
+krdmtuqjgwfoevnabhxyclzsgi
+kfdmtuqjnwfowvnabixyclzsph
+kmdmtuljgwfoevnabixycvzsph
+krdmtxqjgwaoevvabixyclzsph
+kramduqjgwfoevnabixyclzwph
+krdutuqjgwfoennabixyclziph
+krdmvuqfgwfoevnacixyclzsph
+krdmtuqogwfoevnabmvyclzsph
+krdmfuqjgwfoyvnabixyclzseh
+krdmtuqjgweoelnabixyclzspd
+krdmtumjgwfoevnabixyclzypo
+krdmtuqjgkfoevhabixyclzsqh
+kjdmtuqjgwfoevgabixyclzsah
+krdmtuqjgwfoevnlbixyclzsbw
+mrdmtxqjgwfoevnabgxyclzsph
+krdmtuqpgwfoevnhbixycltsph
+krdmtuqjgwfmqvnabixyclzslh
+krqmtuqogwfoevnaqixyclzsph
+krdmtusjggfoevnabicyclzsph
+krcmtuljgwfoevlabixyclzsph
+krdmtuojgwfoeknabixyclzsrh
+krdmtuqjtwfoevnabiypclzsph
+krvmtupjgwfoevnabixycldsph
+krdmtuxjgwfoevaabxxyclzsph
+krdmtvqlgwfoehnabixyclzsph
+wrdmtuqjgwfoevnabixyclzdpy
+krdatuqlgwfoevnabixyclzsjh
+krdmtuqjgwfoevpabkxyclzsjh
+krdmtuqjgwqvsvnabixyclzsph
+krdmtwqjgwfoevnobixyclzspm
+krdmtuqjgssoevnabixyclgsph
+krdmtuqjgwfoevnafixyclzbpp
+krdmtuqjowfoevxabiuyclzsph
+krdmtuqrgwfoevntbixyclzspu
+krdmtucjgwfoevnabixcnlzsph
+krddtuojgwfoevnabixyclzzph
+krdmtuqjgwuoevnabiqycldsph
+kpdmpuqjgwfoevnabixyclzslh
+krdmtuqjgwfoewnabixyzxzsph
+krdmtuejswfoevhabixyclzsph
+krdmtuqggwfoevntbikyclzsph
+krdmtuqjgwfoevnabixydlhnph
+krdmtcqjglfoevnaxixyclzsph
+krumyuqjgwfoevnrbixyclzsph
+kgdmmuqjgwooevnabixyclzsph
+krdmteqjgwfqevwabixyclzsph
+krdmfuqjgwfpevnabixyclzspq
+erdmtycjgwfoevnabixyclzsph
+krdmcuqjgwfoevnabixjglzsph
+krdmtuqjgtfoeunabixiclzsph
+krdmtuqjgwfoevmqbixyclzspu
+krlmtuqjvwfoevnabikyclzsph
+krdotuqjgwfoevnagrxyclzsph
+krdmtuqbgwfoefnabixyclasph
+kwdmtuqjgwfosjnabixyclzsph
+kydmtuqjgwfoevcabixycezsph
+crdmtuqjgwloevnabixkclzsph
+krimtuqhgwfoevnbbixyclzsph
+krdmjuqagwfoevnabicyclzsph
+krdmtuqdgzfoevnabixydlzsph
+krdmtuqjgwwoevnaqixyclzspf
+krdmtuqjgwfoevnabdxyzvzsph
+krdmtuqjgwaofvnabixyclzsnh
+krdmturjgwfmevnabixyclzspn
+krdmvuqjgwboevnabixyolzsph
+krdmtuqjgwfomvnabijyclzspx
+bedmtuqjgwfoevnabixyslzsph
+krdmtenjgwfoevnabixyclzsqh
+krdmtuqugwfoevnabixpcdzsph
+krdmtuqjgiloevnabrxyclzsph
+krdmtupjcwfoevnabixyclwsph
+kremtuqjgwfoevnabixyyjzsph
+krdmtuqjgwnoovnabixyclzshh
+qrdmtuqjgwfoevnabixyciasph
+krdituqjgbfoevnagixyclzsph
+krdmnoqjgwfoqvnabixyclzsph
+krdmtuqegwfoevhkbixyclzsph
+krdmkucjgwfoevnabixnclzsph
+krdmtuqbnwpoevnabixyclzsph
+krdmttqjgwfoevnabixyclbspz
+srdmtubjgwfrevnabixyclzsph
+krdmruqjzwfoevnabixyclesph
+ardmtuqfgwwoevnabixyclzsph
+yrumtuqjgwhoevnabixyclzsph
+rrdmtuqjgwfoevnabsxycwzsph
+krpmtuqjgwfoevdabixyclzzph
+krdmuuqjgwfoevnabixyclriph
+krdmtuqjgwfobvnabixyvgzsph
+krdmbuujgwfoevnabixycczsph
+krhmtuwjgwfoeqnabixyclzsph
+krdwtuqjgwfoevnkbixyclzzph
+krdmtuqjgwkoeqnabixyvlzsph
+kadmtuqjgwfoednabcxyclzsph
+krdmtyqqgwfoevnabizyclzsph
+krdmtuqjgnfoevnabiyycmzsph
+krdmtuqjcwfouvnabixyclznph
+krdmtuqjjwfcevnqbixyclzsph
+krdmtuqfgbfoevgabixyclzsph
+kkdmtuqjgwfoevnapixyclzsth
+nrdmtuqjgwtoevnakixyclzsph
+krdmtuqjglfoevlabixdclzsph
+zrdmtuqjgwfoevndbixbclzsph
+krdmeuqjgwfoeenabixyclrsph
+krdmoaqjzwfoevnabixyclzsph
+krsmtuqjgwfoevnwbixyclzsfh
+kadmtuqjgwfoqdnabixyclzsph
+krsmtuqjgofoevnabixkclzsph
+krdmtuqjdwfoevnibixdclzsph
+mrdmtuqjgwfouvnabixyclzfph
+trdmtlqjgwfoevnabixyclzjph
+trdmyuqjgwfozvnabixyclzsph
+krdmtiqjgwroevnabixyclzspk
+erdmtutjgwftevnabixyclzsph
+krdwyuqjgwfoevnaaixyclzsph
+krdmthqbgwfoevnabixyclksph
+krdmttqjgwfoivnabixyclvsph
+krdmtuqjgwfoefnabixyflgsph
+khdmtuqjgwfoevnajixyvlzsph
+krdmtuqvgwfoevnasixyclzspt
+krdmtuqjgkwogvnabixyclzsph
+krdmtuqjgwfoevnaboxpglzjph
+kadmtuqjgwfoxvnabixyclziph
+krdmtuqjfwfoevnabaxycbzsph
+krdjtuqjgwfoevnabiryhlzsph
+krdvtuqjgpfoevnabcxyclzsph
+brdmtuqjgwfoevnafixyqlzsph
+krdmtuqjgwfoevnavixxcllsph
+krdhtuqjkwfoevfabixyclzsph
+krdmtuqjgjfoevnawixyclzsuh
+krddtuqjgwfoeqnabiwyclzsph
+krhmtuqjgwfnevnabinyclzsph
+kedmtuqjgzfmevnabixyclzsph
+qrdmtuqjgwfoevntbixyclzxph
+krdmtuqsgwfoevnabixvclzrph
+scdmtuqjgwfoevnabixtclzsph
+krymtuqjgjfolvnabixyclzsph
+krdmtuqjgwfkevnablxyclzskh
+krymtuqjswfoevnabixyclzvph
+krdmtuqjhwfoevnabixycwzspd
+krdmtuxjgwfoevnabyxyclzzph
+krdmtlqjgwfovvnabilyclzsph
+krdmtuqjgwfoevnaaijcclzsph
+krdatrqjgwfokvnabixyclzsph
+krdmtuqjgwfoevnaxifyclzkph
+krddtuqjgwfoevnabixccozsph
+krdmtuqngwfoevnabiyycxzsph
+krdmtumdgwfoevnqbixyclzsph
+krdmtuqjgwfoevnabixyxlmsch
+krdmtudzgwfoevnabixtclzsph
+krdmtuqjgwfoevnpbixyclhspl
+krdmtqqjgwjoevnabexyclzsph
+kydmtuqzgwfoevnabixyclwsph
+krdmeucjgwqoevnabixyclzsph
+krdmtuqjghfoevjabixyclzspp
+krdmtuqjgjfwevnabixyclzskh
+krdmkuhjgwfoevnabipyclzsph
+krdytuqjgwfoevnabibyclztph
+krdmtuqjgwfpevnabisyzlzsph
+kmdmtgqjgwfsevnabixyclzsph
+krdmtuqjgsfoevnabijyclzszh
+krdmtuqjgwfoevnabivyclzuuh
+krdstuqjgrfoevnabixyclzspu
+jrdmtuqjgwfotvnabixyclzspj
+krdmrumjgwfoevnabixeclzsph
+krpmtusjgwfoevnabioyclzsph
diff --git a/src/bin/day_2.rs b/src/bin/day_2.rs
index add43bf..7700871 100644
--- a/src/bin/day_2.rs
+++ b/src/bin/day_2.rs
@@ -4,15 +4,50 @@ use advent_of_code_2018::*;
use std::error::Error;
use std::path::PathBuf;
+extern crate im_rc;
+use im_rc::HashMap;
+
// cargo watch -cs "cargo run --release --bin day_2"
fn main() -> Result<(), Box<Error>> {
let input = read_file(&PathBuf::from("inputs/2.txt"))?;
println!("Input: {:?}", input);
-
-
-
-
+
+ let (twice, thrice) = input.iter().fold((0,0), |(twice, thrice), next| {
+ let occurances = next.chars().fold(HashMap::new(), |occurances, c| {
+ let counter = occurances.get(&c).cloned().unwrap_or(0);
+ occurances.update(c, counter + 1)
+ });
+ let has_twice = occurances.values().any(|count| *count == 2);
+ let has_thrice = occurances.values().any(|count| *count == 3);
+
+ (
+ twice + if has_twice { 1 } else { 0 },
+ thrice + if has_thrice { 1 } else { 0 },
+ )
+ });
+
+ println!("Twice: {}", twice);
+ println!("Thrice: {}", thrice);
+
+ let checksum = twice * thrice;
+ println!("Checksum: {}", checksum);
+
+ for i in &input {
+ for j in &input {
+ let diff = i.chars().zip(j.chars()).fold(0, |diff, (x, y)| {
+ if x != y {
+ diff + 1
+ } else {
+ diff
+ }
+ });
+ if diff == 1 {
+ println!("Diff of 1: {} + {}", i, j);
+ }
+ }
+ }
+
Ok(())
}