From 9cb634b5d16abb7adbb8b0deab3c997d8edbdb32 Mon Sep 17 00:00:00 2001 From: Bert Peters Date: Tue, 6 Dec 2016 12:15:22 +0100 Subject: [PATCH] Add solutions to day 6 --- 2016/day-06/Cargo.toml | 6 + 2016/day-06/input.txt | 624 ++++++++++++++++++++++++++++++++++++++++ 2016/day-06/src/main.rs | 60 ++++ 3 files changed, 690 insertions(+) create mode 100644 2016/day-06/Cargo.toml create mode 100644 2016/day-06/input.txt create mode 100644 2016/day-06/src/main.rs diff --git a/2016/day-06/Cargo.toml b/2016/day-06/Cargo.toml new file mode 100644 index 0000000..63a51d0 --- /dev/null +++ b/2016/day-06/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "day-06" +version = "0.1.0" +authors = ["Bert Peters "] + +[dependencies] diff --git a/2016/day-06/input.txt b/2016/day-06/input.txt new file mode 100644 index 0000000..6caf81a --- /dev/null +++ b/2016/day-06/input.txt @@ -0,0 +1,624 @@ +iyeajeby +qengiuoe +wxzardgo +jciguemn +zcampkps +kiqjpjqb +knwhoxlw +iaxxpjhe +kgrgaixi +lciydajs +svugtdwe +nwailbqu +cbkwwxvt +lqjyrawh +jylmtlzk +firecpyg +xegtcvvx +jllqqzeq +hggmnxlc +pdmfuqlx +hnbksbkl +pmjmiqti +gpmuvcsh +tspnxvnm +hghwizhe +sgokeybb +jtphckcv +usypmmzq +irlfaboj +prgiqvil +nfqegpjd +aivwwkix +xeljyzjv +mrdpqlzc +metcvpvd +ifizfkgl +uznvqiqw +uzylkeui +obmqhlan +vaoivkeq +wvlbwfaf +ntbgtbpz +lbuieiea +rljyfeop +rynkdwiq +hyqpjwzl +supxlsql +bntmjboc +qntfhain +xxtjctjz +qppakrbj +ptnnwmlg +pucuqrpi +ensluhxm +wtnabsej +hvnozkvx +dhxgysdk +qdizyrkg +vtuyxjky +lxwcyfxr +xoyphxmb +ltylucct +oaawvjfa +qbjmdcap +raqhkkbe +uqtxpvhj +pddzoucq +axfbgpvj +eohksqcm +jtmmkovb +paronxgv +gtxnqybz +qfsobvxz +ywrnogwz +ytdvpmzv +daeappko +zgjdatzf +psrfofvi +uobknckb +rvndwdgs +oedojfqv +shxmutcm +nigdxgrz +ngwvdair +wexxkvwn +oqmrjlcr +vcbmxvyb +ekdfdzch +klphcryl +bbtobqqo +wupuvqio +hwiufjpk +rckjewzp +vhgzdtil +qrvqytfe +opolrgwi +nektqhbg +ynubobwy +cqnysvzf +muqrlihy +ncbeeuur +hxsvpoug +kacsofnk +vztkoicu +smxiuykn +sgnmdqmw +sfsxxnds +iwquujxr +fwssfvfw +qyoswzsm +kvfvizgu +fmewmudq +mvtekgjn +kkffshrt +jzbkyxzf +beszoylz +lnhmbwae +tijfkcrt +culovluh +jrgtbxma +yqtlarnm +rdlxlplt +vzgphnpi +igpbfrrd +yqdgvyke +juhzerjo +kfwlvhag +ysznuuey +turxgyik +iqgcxxpa +tjrmtkjk +ywfcwvqp +ozmguljj +maxegnqi +vavydxwd +dhlckjra +omvdoafe +rvzejiol +rsnpjser +nejognkt +agkavzki +uzskztny +knvzbkff +iiuhrzsp +amxryjhv +yqxdgdaj +tpvellfc +dqutbibf +fbbrpcbg +shxlcvmc +ociooedg +nedlhmfo +ohdxifnx +mqhbpyed +tauomzjy +bkooiesi +xtukgdec +mygazipf +wkvecylo +tlejwzcj +rcpygkbi +uihidqdr +lxwthely +ywyoahob +zwjrveex +eqahofbx +mvipdaql +zccdioga +gttnacns +urajevul +uhsdjkhm +cjbpznua +tyfvodhw +feadmwyl +cjmccfcy +uawxsuyy +xzzidfrj +slhgapvb +tbdwntwx +bvspfozq +pkkwgooy +frnhifax +sxfkbojn +ffnzlqda +pbtbewtm +mivpqcyc +gztezasy +jlfdrmou +xjmazeef +lgcaevtl +piidoxbi +iczlosyt +egszahwu +cmbybzvi +orczduhd +hzorfhdv +yptggtmu +yfsmednv +ajawzgpp +niicgavl +mmdpsogr +wkufsuct +yboinvnc +lmwbrqmb +rrsfhics +xguvmcmi +yldifule +laycxgaf +jtnizmxf +qrbpqznc +cpplgbsm +xzkwttnj +axjxusuh +nthcjcqn +zjkdjlcz +uulqjmfq +djqlzrcb +ftxhzuoq +bfrzrdtn +fvovpzts +tloyyqoa +spupkgwb +ishhbwok +spyfzbsj +bvvnfnxx +iuectyxc +xbbjridq +drzfvsrw +gokuvwjf +hhkmgqxf +epijynaj +bfxdnibq +pjoovmhf +izbgldjr +rvxrhjxa +blhhorwy +xwmobyph +pfoimsbl +gprwonid +hfwmazfu +dudhehvt +nbekhgbg +qbwklpvg +yemjyobm +vmocaztb +xkwklord +tjooucsf +qowresxh +cxeapuvv +zmlzqivx +fryanflf +kxcrserx +jtoqtooo +axrtkjyo +fwwzdsbx +pyphszfp +ekdcnrgx +zyrhxcvc +blcqplmo +wnsiistm +slavtfip +sixawglm +sxpjnpsa +sfwmudzt +kcpetkcw +iqfufsws +wdfbgvol +muvtnxzg +otgycshn +gddbabma +swksjxjx +hnfcsnir +tmcnycfi +lpvuwehn +htyogany +rggezmhh +guzhwmss +zoqiscdy +dqbtvyrb +wfnymsai +klfpdgvn +ihqjdope +dudllmty +gpbkmwtd +tjmtvjpk +sjnkfrsk +bgruelqs +repdjhre +flxjlvah +lkpnbajp +rmkqdjpx +enimddcn +nzowveei +cohzzkee +sxfvyqwi +vlztaixp +xgkrlsyh +eaurshic +kifvzhsv +dxfsexup +fyqqbzgm +bnxsgjxg +ndbbkscp +xyjhzqel +eyanetmo +quakpmsr +kqfeprrb +hhsvwyse +jjvjivng +zkeiinwn +adibxest +zjzrkmxr +kceozeud +iknfusda +gqmuepbo +ccwltods +smaurfwy +yojrrudk +akygvwyf +dermnpvn +bvfvjskb +pcohqoyu +odyqfyhy +nqgepwqo +zijtbqgd +czfgqsmr +fkgeoorf +udvncboo +dwxgrgck +vqhthccp +gvkfkpwr +pquhsiha +hlpqfrpz +aeirprab +bouoglph +zwyimnhu +zpculwdn +mokpnpeq +hfgfjamc +osgncdnf +ejfjqwql +tovcchzu +wwmburym +mdonvwnw +wxjysrlt +cjrqrnqv +okzeilge +egunoujn +dlbaqemd +qrdyabya +vaaxguwe +hjqwytxz +xtvmgdaq +noijjgft +xgysigmw +urbsmwdk +bjnerghw +aspvghjp +hgciumho +ivjihqed +wtvkobuw +zhtyhllg +jlxjwjui +xkmxhoek +rydzmqip +ydonbzvk +byeoptyo +gpnnqxrb +hyzplaie +tbedyaph +zgqhqnmg +tdepvaex +wytwmgkr +qsmuyzys +fijlauqj +wyqylgam +lbwxnluj +nmecxavu +ofktnhfb +lhjgzkjr +ucctfetk +mggvgkmu +yzmnbbhe +kcnqhuam +rxiwfblx +vfufzjou +cpynrovg +qdwshnpi +pcrxywto +ozhzwpwa +zroxmvfr +fpipfjvu +leyiafxs +oacgxszs +voebeyvn +ixkqabkl +lqabfhtd +oewbtlgc +vdlaniii +tabtkolp +xufkdmem +niofeqxn +innfbedm +zahlnzhd +whmqyffv +fhjascxd +wnsktsdi +ucdgnvkf +fmpxuyml +pnvuhmup +wohfuyto +wthjmlzx +tkcdmttv +ubyrests +mkrplnes +mglepvyl +shqafjly +gbpaitlu +cesjmugk +qnqmvnks +kbvvlltq +luvgtdmv +rrrhawdz +dthrxkth +bglwrdgk +apqxickb +vnzwzjba +reiafjdt +qfcunhks +dwmhshtd +rwtwnxxu +gjgdhwtr +dhrwidzp +manohccv +jvccmlat +txhfklix +nczocnew +gxlpkgqr +vsrtxogh +ixhtcwaz +qfapctcq +glvtpiug +jnuecngg +bktbndyg +ceboexzj +lsjakjjw +oemmiqvu +zqscwlay +hqedlpzb +hsrztfxj +fjpwidgw +abrsenrv +qseoiuyj +jtjtqxgr +esczykzc +mazmziim +szzwzfuq +zbcfhaiz +uqsnjwus +vwzqohsu +yylbjhnl +chqdcblk +vporypnv +vfhdofdx +eztmaogh +wlzjsgbw +dqutunrc +gwtpdvpm +ywxghnkc +alacomlw +jfuygdcy +zkoeauig +abufqquo +ncilvdgq +guinnabe +pdwybure +jocsrmfp +acwncthl +cdnaffnn +zyqbszzz +azhxybig +hibjuhsw +tvckjxuf +vklsqbos +efzukhlt +kjaqqofz +esxcyrxt +yocrwucn +iodafafm +oiakmvtb +dmbgtcpj +qnzrryot +ufcbptbz +veprgqre +umsltfes +bvvqhcmz +rucsowjt +kkbgkrxe +fksibbfh +tyckeiqo +gfqurpyl +raljmvsf +chednohc +gowzqrfm +ypktqcvb +fgiusizq +jvdsmnhu +esfuxpra +uraiwlfz +vpkulaao +erkvbjrj +mrhjjist +xmpayrdq +biqwpkrm +lrlhkljw +rbaglxsu +kryywepc +mrydxkuv +obksnkir +jogxscwa +pxkzdamo +wcywigdv +acqicmyz +xiqhgpik +izubxapc +yrzfptzd +qmyltgkw +dwedcarp +oouewlrv +izelyufn +ehdstcah +nylqvqtd +ywxjkxnx +sstceepq +bjihzptq +nvawrewu +plftxhsh +eyuzdika +gjdyaoek +euqeablj +zhgjzdki +lyygbhly +joscwikc +cbqczxbu +xnhptyqu +txvltmyh +kwtaueat +btpbbibj +ueytsouw +kfmmcyqk +fwflotzv +ouwyewua +hslsjpur +jdgrtwme +lgelctfc +nlxyvkgh +xpeslfje +adcifgwz +gquvwdeb +rkmzqard +lvzehstp +cijqaygt +dwfzsddm +vmwqrrsy +aotsaqoj +irjumknp +altzbfjo +hubsrgdb +nudnkfof +bvhvcltf +xupumtmg +kjfxunyd +pjwhyeuz +zmnxkepw +mpzvjjni +cskxvphp +dykbldmb +ymmsshaj +gdsvrycq +ehdvpiqy +engermzp +tmexxgkw +acjslpiv +qprqqyqf +fbictbjs +llaeirez +uxoofxnc +ukgpjtlz +tpxwxzpu +cuzgcjgd +jnzxfqww +wemyhsbv +aslnwaqg +aibaikgt +hglojgqv +larqrtka +ozlrwpna +pzxsdrjh +vsnuuusj +jswkkvun +darbbbhk +woeihkoh +xdsunolx +ymvbtrxg +mtodxqik +fxkcdfwq +koivubnr +gitldbqs +bsjymzpd +whaluyys +rvaftjox +qhinxcid +snpkwuko +mdgvstoq +zzytixxc +qsgrlmdn +ddjqxeaw +uilqxznh +chazpmyk +iivrixot +casfxwwa +mvjdazsr +dnmivmal +eayyeyfh diff --git a/2016/day-06/src/main.rs b/2016/day-06/src/main.rs new file mode 100644 index 0000000..5ff6f6a --- /dev/null +++ b/2016/day-06/src/main.rs @@ -0,0 +1,60 @@ +use std::env; +use std::io::prelude::*; +use std::io::BufReader; +use std::fs::File; +use std::collections::HashMap; + +fn most_frequent(counts: &HashMap) -> char +{ + let (mut c, mut freq) = (' ', 0); + for (cc, cfreq) in counts { + if *cfreq > freq { + freq = *cfreq; + c = *cc; + } + } + return c; +} + +fn least_frequent(counts: &HashMap) -> char +{ + let (mut c, mut freq) = (' ', i32::max_value()); + for (cc, cfreq) in counts { + if *cfreq < freq { + freq = *cfreq; + c = *cc; + } + } + return c; +} + +fn main() { + println!("Hello, world!"); + + let args: Vec = env::args().collect(); + let f = File::open(&args[1]).expect("Could not open file"); + let reader = BufReader::new(f); + + let mut counts: Vec> = Vec::new(); + + for line in reader.lines() { + for (i, c) in line.unwrap().trim().chars().enumerate() { + let pos = i as usize; + if pos >= counts.len() { + counts.push(HashMap::new()); + } + + if ! counts[pos].contains_key(&c) { + counts[pos].insert(c, 1); + } else { + let cur = counts[pos][&c]; + counts[pos].insert(c, cur + 1); + } + } + } + + let decoded: String = counts.iter().map(|counts| most_frequent(counts)).collect(); + let least_decoded: String = counts.iter().map(|counts| least_frequent(counts)).collect(); + println!("Final (most frequent) word: {}", decoded); + println!("Final (least frequent) word: {}", least_decoded); +}