diff options
-rw-r--r-- | inputs/2.txt | 250 | ||||
-rw-r--r-- | src/bin/day_2.rs | 43 |
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(()) } |