diff --git a/day06/Cargo.lock b/day06/Cargo.lock new file mode 100644 index 0000000..5148a23 --- /dev/null +++ b/day06/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "day06" +version = "0.1.0" diff --git a/day06/Cargo.toml b/day06/Cargo.toml new file mode 100644 index 0000000..6613f87 --- /dev/null +++ b/day06/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "day06" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/day06/example.txt b/day06/example.txt new file mode 100644 index 0000000..32ba518 --- /dev/null +++ b/day06/example.txt @@ -0,0 +1,16 @@ +eedadn +drvtee +eandsr +raavrd +atevrs +tsrnev +sdttsa +rasrtv +nssdts +ntnada +svetve +tesnvt +vntsnd +vrdear +dvrsen +enarar diff --git a/day06/input.txt b/day06/input.txt new file mode 100644 index 0000000..23a4059 --- /dev/null +++ b/day06/input.txt @@ -0,0 +1,572 @@ +blrqqadw +hxwteava +xtzzneor +ufydaiyx +hhvcoozu +nbbvuvmd +usvdcalw +rpntrbyo +kgjholvo +nlohafzu +gxmifiuy +xndolmhm +zmtsfmtq +wkdzmogx +aogqflji +uphmjtnl +jkqognlw +mdzsbrij +zyxolasw +kvdyikgy +xpxgmuqq +viuoqyap +simgbmca +qxcjewnz +ivwoedjr +mlmzozlr +jmyallmm +oeecmjte +miuvzeww +qtfsiigb +lstgpdfp +pevoamxy +mjtpbedv +ugbasbgg +idcnuhtx +wwhcrxdr +prrugmrq +npoiywvw +zpkohigv +wngoczfk +gxnmxano +cbacsmte +meclajtf +zhztflqy +grqqlecu +qjbzsptn +ebagoidi +egegrnyh +jccwkqle +ikkwrzqt +nedkjwhf +vildwwrp +ugrejotn +kdajfbqw +gyiwhxpd +eemhkuwh +jvfhoiqi +wsgyaiip +jzjvagvv +lqupczes +fetfptqt +msmlbgcf +iukfpgrm +ctymfjpj +rbrpmkvx +glooxgap +scctgiai +lakkjuyk +gaekimfl +bhfaybki +qaiazzpf +dwqkvsee +fuhbygkt +zhkggelc +haigokzn +jpuangaj +tpunltos +izqxnhhd +oeyxnqkn +vzvelmik +ddnaozap +mdlhkdlu +oglyexnm +mcgxswpe +jzkjknxc +gfqnuhfs +ztnxzwng +bnuxixlk +vmumdwec +kuxxbcbv +vdcfhyso +qtdesxqr +qciljohn +qqlluqzz +njhvvqbw +knakngrj +pradgsbt +koffjwwy +tvrkgjql +mqtxerte +smigupym +bxxvoskx +jerbindg +snlgnowp +qsuxtdsu +fnpexyoa +ffwifdad +mvgrpczm +oxszzrsb +pxefzlch +mcgbeauh +neseoapm +iwnulsrv +zhinoifi +lfmjmmtk +fsxcqurn +gmkkhfuh +nuqeimxo +uvjdgkdo +ohtmvkcu +albuiptc +piaihrgr +fjviblws +qotlvddl +gchijkjr +azzrnqhy +xrynrbck +pdvkcekk +thscvzai +eoapfznw +hpgoissz +ifnesaoy +eniqycje +hmjmghcp +sfyrvbbi +tuxcoidt +icysmkcf +ycagvtls +dohqfcgc +taitvkzk +bblnroyh +grdklrua +qpijbooa +pcwtjacj +mrvxbefl +oodwrtvj +xosqbcie +zbquakff +ypwpamng +rpfbkssq +fctgmcav +hdtcdfcf +ctboapkz +qypakerm +vebdtsmq +cyxqtbtt +dcnpkmnu +hnjppwfo +gqmfdahb +hxiqcrbe +rpxazkak +nmtraoky +sisqtogo +oycwooev +lmmitjey +rytzptco +waatgjdu +khsuxyse +cxjltfxn +eedsmcld +fngdicwe +lkomchdq +ulvabpoz +oyhjvimr +dpyexiwi +wjfzkbbv +ihohnaxx +ajxfefrv +bplrrpcz +rtamodoq +slwrcibk +sgwdtumz +vlemhplz +dnpkqvad +ytolejsa +ojevrxsc +bgbmnvyv +lmrousup +yyubvohm +bqaqltmt +vfbzzthz +ylehjmop +exddqqwo +xqfxejzq +myyuypku +zyvmvbla +cnpquvbp +yaxdddeq +cnrjqdra +lwphgfgf +zqdbcnmn +qelivdwx +wpnwomgu +xzephbpa +yghrabgr +pnjsyhth +okdznczw +urwcwwfm +hjrsrrzk +foklmzqs +mjldwaun +dabalbmb +jmtqvwst +uhtzixah +blclhmjf +wilsnjwb +qeeriszr +vbfagerv +afegxkkh +zwzausdd +ysfgzvbw +ymjlmnmz +rnrbxnij +ihvhqtvk +ofwrugbp +ontvlhfu +sfjgpqpx +oyzkaiyl +xfmvkfkh +pqpeeptl +jdyueahx +plghatyl +yrdizope +lrurgkqw +xdqtlmww +dkaiotxb +iegjcmln +iupoupxa +zrepcilx +tpewzoxi +munsmbpj +fvhsucvb +rlwchfml +kcmlbubj +jnhurapr +dflwxeii +wtypbujm +jivypmpr +argvlhnz +acyvvplf +naqafzfw +ngepfsju +xfpuwtji +pqgkxbmj +oeygjbxs +evoydkqq +nhuoohdi +wrznguek +ssirmkbq +ackhglvh +egszqozo +rhnhhxul +mqabqvun +yunlcuvd +zklsneau +itanrdqb +pvxbkwoc +rqbqjyuv +ioxjpvqd +pzkgsdej +yklripsi +iohazhoh +umxxpdaw +czfnfgxt +xaxvkjjc +qhgvdvaa +iobwhxjq +jwfwqqjs +cbrfgjpp +conpdlzv +wbcmssue +gyqkseid +ozrzahxt +rzowboce +lhntmyie +tlrcktzc +lxmzpvku +ckliqrdt +qlmalosg +ovvyxrnr +gctjwzrl +ooqvxzac +dbdqzzly +fpsjzuxx +njndzgel +hjfqofhh +txhcpktf +otceqnmc +dduyepiz +bsxdbzgs +zklbicun +rstnuwtg +tasiqsbs +wewnwuyn +zvgkuxxp +nxcmlrmx +mizqhlnv +xyxzfeca +qkeuwzgi +ajnzmfks +ejszlxyc +xzfggxpd +jbooydts +eisoqvuo +hdfpevns +alybbyrb +yvpylcnz +tdpcycrv +kwptuqyw +ncobyufk +fclvkbek +tgnfcfup +vbcuaudl +hublkdvy +aoetzcyl +fsiuwhbi +eyolgmxh +siptvnjn +shvycepr +ntrwmime +dbdnbfyt +bwluchce +uigenqhy +krxdyhap +avycqglh +gguniqpm +wcwzelyd +wzurdris +rmhstxuj +vuaozvvq +bsdgqrpx +twnvkunt +nqgqtugs +vzkvghwg +ypceflob +dsyzunmb +kvhacqqr +ozlfwkjl +pyznytxd +ykdkbfgf +eajwdyia +bhkxsxcc +vytpdoop +ibpypdrh +dkkjnwng +lxwkkldf +nbtckkoy +qtjyffvl +sbitpceb +sxmhbcuy +zorovlxd +bazreact +cwzggemu +uowhquji +eijszbmy +aarneovu +grhvjqyo +fzheiyvq +nzsdrlli +wfsdwsok +wrqjuygq +ggpffnri +wkycrfjm +drksyjxn +smuhwcxa +iabdvvyj +esidunjn +decnfzwl +ysihdzkf +zokmsjgk +pxuddjdo +uemyoegc +glqycmsw +fvfkqzdu +mhotjpqc +pfyuopbx +tibutsqb +krzcqnkv +djqpmsmb +vbufrshp +mmzsrikm +zkjbrtoo +uopielbd +jmketnly +raomwphg +uwocphkf +lvktwagm +lqmorzgf +rihrgrdp +cnbuplfg +hwfjvxcj +sfgptuic +ixkimxsx +kfpicnix +tvpybbrf +navehxpr +rwbcttbq +obqcxwjd +fuiskmfg +xcvfxoeh +tsmaaoyx +qjhiyeex +qwfxiyxq +ctkyxatm +hyxhsvmy +puknicfi +hbwzmyks +uczqlycu +wkywzgqs +kzfehffd +aoooehdc +lnijvgrg +aedbnxzk +lusvnger +ltpbpgiq +aypxjgwo +lgejygmw +auqexwja +fwszagnq +aiafpduf +lyltmest +agtasqwl +fqrlliiw +udarpyjv +kxotyded +aodevwdt +lmmfarbx +snjwogeo +ehfmpymn +yahfaxeo +xudbdnog +rrkxhhsy +hdxadfck +dmnujkng +cujvjtry +srwxylvi +dwohbywb +cvspfupf +czvvjhfw +wvyjwtzz +vfooqywj +bmulxlpz +hbukjylo +bdhsvgdg +vnrrqyue +hjveswxf +yxgzdjwn +byonsarh +edbmtqyz +owvunnfp +wfqqsuyj +cwckbkwt +plesmdky +pzatdacm +nqfyxhij +jjwqitsc +tejffykk +yllyznoo +kkqhuqlc +hxchsqos +buvmceha +kbzymzrl +kiemcigv +txmjfujf +vfnystic +kvaiybnq +ztrwxszz +wiyawlfm +sgedycpx +isafnieb +bpspuqvx +fqjtxrtb +bgjdrvhb +mnsbgbhe +jpsqcfzz +fpumugea +qqutezwg +eoabntsw +tupqchzt +ezwjasja +rsguwrqg +cqzcijqd +rhxlhksr +vcwlknrc +eiqbcafb +lwzbrrtr +aomiovcj +ujxshcar +fbpjehma +bgdphfwg +iukvlxvq +ptawvjzy +styyqrqd +itobtfvm +yqnpsyha +vkwfaykp +zwpoxkzx +uqwasoht +tkgfmnvj +xkilydvt +xlmkpdaz +xfvukjte +yyzpwped +xzxwnrlm +ausmhunn +qgiiljhq +njqhxprl +fgfxiphp +kkzjpuur +dcqixesl +tthldwgg +nkjxnttn +cjtiiltj +drlzddsv +xxluiael +kjjsewia +danhtpxa +edexzcqw +mrqewvuh +opwtwbbt +rdbsaeke +viistwnj +llcndvsm +jeejjqyb +hstekias +gmswtskg +qhdktszo +ptbryiff +jrtlgbag +gjbbbfnu +uirwdwzh +esmntxej +vdcmrenk +tagtsvaz +hnewrron +zydwkvuh +zscfhzxk +sazgunom +gqcxdowc +twmxtniu +wfblhfiv +barpdrob +jwjrnqhv +xvnysjvz +jvsftvqs +jivuhphv +grbezkpe +xuolyqis +smuxlqpu +rticwcrh +huzyzxul +pgqawldg +mdcgejab +rlrgwpfo +uqhvyglu +csinjsjy +ydorfrud +gmcnjnbr +qzvizjbt +vejkuvii +uhfrombz +clgrjlys diff --git a/day06/src/main.rs b/day06/src/main.rs new file mode 100644 index 0000000..77675f2 --- /dev/null +++ b/day06/src/main.rs @@ -0,0 +1,56 @@ +use std::collections::HashMap; + +#[cfg(debug_assertions)] +const FILENAME: &str = "example.txt"; +#[cfg(not(debug_assertions))] +const FILENAME: &str = "input.txt"; + +fn main() { + let binding = std::fs::read_to_string(FILENAME).unwrap(); + let data: Vec<_> = binding.lines().collect(); + + part1(&data); + part2(&data); +} + +fn part2(data: &[&str]) { + let mut counts = vec![HashMap::new(); data[0].len()]; + + for message in data { + message.chars().enumerate().for_each(|(idx, c)| { + counts[idx].entry(c).and_modify(|i| *i += 1).or_insert(1); + }); + } + + for count in counts { + let the_char = count + .iter() + .min_by_key(|(_, val)| **val) + .map(|(c, _)| c) + .unwrap(); + + print!("{the_char}"); + } + println!(); +} + +fn part1(data: &[&str]) { + let mut counts = vec![HashMap::new(); data[0].len()]; + + for message in data { + message.chars().enumerate().for_each(|(idx, c)| { + counts[idx].entry(c).and_modify(|i| *i += 1).or_insert(1); + }); + } + + for count in counts { + let the_char = count + .iter() + .max_by_key(|(_, val)| **val) + .map(|(c, _)| c) + .unwrap(); + + print!("{the_char}"); + } + println!(); +}