diff --git a/2018/02/input.txt b/2018/02/input.txt new file mode 100644 index 0000000..606da3e --- /dev/null +++ b/2018/02/input.txt @@ -0,0 +1,250 @@ +qwubbihrkplymcraxefntvdzns +qwugbihrkplyzcjahefttvdzns +qwugbihrkplymcjoxrsotvdzns +qwugbphrkplympjaxmfotvdzns +qwugbghrkpltbcjaxefotvdzns +qwubbihrwpuymcjaxefotvdzns +qiugpihrkplymcwaxefotvdzns +qwugbihrkplymcjavefotvotns +qwugbihrkpvymcjaxefotvnzes +qwvgbihrkpltmcnaxefotvdzns +qwugvihrkplymvjaxefotvczns +qwugbihrkplymwjazefotvyzns +qwugbihrkplbmcjbxefttvdzns +qhugbihrkplymcjaxefotnazns +qwugbihrkpyyacjacefotvdzns +qwugsihrkpsymcjaxafotvdzns +qwugbihriplymcjixefosvdzns +qwuibihrkjlvmcjaxefotvdzns +qwugbjhrgplymcjaxefotvdzys +qwugnimrkplymcjayefotvdzns +qwumjihrkplymcjexefotvdzns +qwugbihukptymcjaxefotvvzns +qwughthrgplymcjaxefotvdzns +qlugbihrkplymcjbxhfotvdzns +qhugbiyrkplymcjaxefotvdzes +qwugbihrkvlymcjaxecotvtzns +qwugbihrkphymcjaxefitvizns +qwugbbhdtplymcjaxefotvdzns +qwugbihrkplymceaxefotvltns +mwugbihrkptymcpaxefotvdzns +qwugbihrdplymcvaxefotvdwns +qwugbihrkplymcjaxekhtvhzns +qjugbihrkplyjcjaxefonvdzns +qwugbihrjplymcjaxefgtudzns +qlugbihrkplymcjaxefztvdpns +qwugbihrkclyvpjaxefotvdzns +qwugbihrsplymnjhxefotvdzns +qwudbihrbxlymcjaxefotvdzns +qwugbihrkplymcjxxefatvdzng +qwujbihrkplyqdjaxefotvdzns +qwugnihrkplamcjaxefotvmzns +qwugnihrkplymcjajekotvdzns +qwugbihrkslymcjamsfotvdzns +fwugbihrkplymcjaxetotvdzne +qwughihrkplyucfaxefotvdzns +qwuebihrkplymcraxefotvdzgs +qwugbinrkplymcjaxefodvdznh +qwudbihrkplymcjsxefotvjzns +qwlgbihrkzlymcjixefotvdzns +qwugbihckpoymcpaxefotvdzns +qwfgbibskplymcjaxefotvdzns +qwugbihrkplymczaxdfotvuzns +qwugbihwkplymcjaxepxtvdzns +qwubbihrkplymcjaxefntfdzns +qwunbihrkpaymcjaxefotvdzni +qwugfihrkplymujaxefotvdzni +qwugrihrkplymkjaxxfotvdzns +ztugbihrkplymcjaxefotvdznt +qwugbihrkplvmcjaxefotvdzph +qwugtinrfplymcjaxefotvdzns +qwugbihrkplamcjkmefotvdzns +qwtgbihryplymcjaxeeotvdzns +qwugbiazkplymhjaxefotvdzns +pwugbihrkplymklaxefotvdzns +wwugbihkxplymcjaxefotvdzns +dwugbihrgpdymcjaxefotvdzns +qwulbihrkplymcjaxefoqvqzns +qvugbihrkplyhcjtxefotvdzns +qwugbihrkplymcjaxcfotvfzjs +qwugbihrkpkymyjaxdfotvdzns +qwugbinrkplymcjswefotvdzns +qcuguiqrkplymcjaxefotvdzns +qwugbihlkplyccjaxefrtvdzns +qwugbihpkplomcjaxefotvdhns +qwggbphrkplymcjaxbfotvdzns +qwuipihrkplymcjaxefotvdznt +qwugbihrhplyccjaxeforvdzns +qwugbdhrkplymcjdxefotvdznv +qwugbihrkplymcjaxefotvbfos +qwugtihrkplymcocxefotvdzns +qwugbihrkpljmcjaxwfovvdzns +qwugbnhrkplymcjaxefotvdxnm +qwugbihrkpeymcjauefotvlzns +qwugbihjkplymcraxefftvdzns +qwugbghrkplymcjaxefotvizni +qwwgbihrkplymcjrxefotvrzns +qwugbihrkplymzjawexotvdzns +qwugnihrkplymcjpxnfotvdzns +qwugbihrkdlytcjaxecotvdzns +qwugbihrkacymdjaxefotvdzns +qlugbehrkplymcjaxzfotvdzns +fwugbihrkplymcjamefotldzns +qwugbihrkplymcjarefotlszns +qwsgbihrkpnymcjfxefotvdzns +awuubihrkplymcjaxefrtvdzns +qwngbihrkpjtmcjaxefotvdzns +qwugbihrkpltmkjaxefytvdzns +ewugbihrkplymcjvxefotvdzus +qwugbihrpplymcjaxsfmtvdzns +qwrgbihrmplymcjaxefutvdzns +qwugbihrknxymcwaxefotvdzns +qwugbnurkplymcjabefotvdzns +qwugbihrkphomfjaxefotvdzns +qwugbchrkplymcjaxefctvdens +qwugbidrkplymcjaxefotwwzns +qwggbohrkplgmcjaxefotvdzns +nwkgbihrkplymcjaxqfotvdzns +qwuibihrkpnymajaxefotvdzns +qwugsihrzplymujaxefotvdzns +qwugbihrkplumcgaxefodvdzns +qwugbqhrkplymcjaxefotvddts +qwugbiorkpvyacjaxefotvdzns +bjugbihukplymcjaxefotvdzns +qwugbyhrkplymxjaxexotvdzns +vwugbihrkplymcraxefotgdzns +qwugbihrkplymjwaxeaotvdzns +qwpsbihrkplykcjaxefotvdzns +qwugbqhrkplymcjaxefotgdzno +qwugbjhrkplymcjaxefatvczns +qwuglihrkclymcjvxefotvdzns +qjugbihrkpsymcjajefotvdzns +qwugbinrkptymcjaxedotvdzns +qwurbihrkglymcjaxefomvdzns +qfugbihrsxlymcjaxefotvdzns +lwuggihrkplymcjaxefotvdzds +qwugbihrkplymcjhxwfjtvdzns +qwugbhjrkplymcjaxefotvdyns +qwugbihrkplymcjoxefepvdzns +awwgbihryplymcjaxefotvdzns +qpugbihrkplymcjaxekorvdzns +qwulbihrkplymcuapefotvdzns +qwugbwhrkplymljaxefotvdrns +qwugxihrkplymjjalefotvdzns +qwugbmhrkplymcjyxefotvdnns +qwugbihrkplymcjnxgfotsdzns +qwygbihrkplsmczaxefotvdzns +qwugbihrkplymqjaxefovgdzns +qwuwbihrkplymcjaxefktvdznu +qwugbihrkplyfcjaxeoowvdzns +qwufbiyrkplymcjaxedotvdzns +qwusbirrkplymcjaxefotvdlns +qwurbihroplymtjaxefotvdzns +qiugbihrkplymcjaxefvtvmzns +qwugrihrkflymcjaxefotvdzls +qwugbimrzplymcoaxefotvdzns +qyugbiwrkplymcjasefotvdzns +qwubbihrkpiymcjaxefotvdzws +qwugbilrkplymjjgxefotvdzns +qwugbihykplympjaxefotgdzns +qwugmxhrkplymcjaxefotvdins +qwfjbahrkplymcjaxefotvdzns +owuzbihrkplymcbaxefotvdzns +qwugbihrkilymcjaxefotsdzvs +qwugbwhrkplymcpzxefotvdzns +qwugbihrkplymcjlcefotvdjns +kwugbihrkplymcjaxefotvhdns +qwulbihrkplymcfwxefotvdzns +qwxabihrkplyhcjaxefotvdzns +qwugbihrzpoymcjaxefotqdzns +qwugbihrknlymcjabefovvdzns +qyugbihrkplymclaxefotvgzns +qwugbxhrkpgymcjaxefotvdlns +qwuplihrkplymcjaxefhtvdzns +qwugbihruplymcjaxefotmdzps +qwugkihrkplymcqtxefotvdzns +qwugbihrkplymcjaxeyodvszns +qwukbihrkplymojaxefotvczns +nwugbihrkplymcjaxrfothdzns +qwugbihrkklymcjaxqfotvdzcs +qwugbihrkplemcjaxefotvufns +qwugbihrkplymcjaxbfitvdzne +qwugbizrkplymcjaxgfotvdhns +qwulbihrxplymcjaxefolvdzns +jwugbihckpoymcpaxefotvdzns +qwugeihrkplymbjcxefotvdzns +qwuxbihbkplymcjaxeuotvdzns +qwugbshrkplyvcjlxefotvdzns +qwugbimrjplymcjaxtfotvdzns +qwugzikrkplymcjaxefxtvdzns +qwugbihrkplymcjaxefftvdgnq +qwugbihnkilymcjaxemotvdzns +qfugbihrkplyfcjadefotvdzns +qwugbihrkplymrsaxefwtvdzns +qwugfihrkpsymckaxefotvdzns +qwulbihrkplymyjaxefotvdkns +quugbikrkpkymcjaxefotvdzns +qwugbihfgplymdjaxefotvdzns +qougbihrkplemcjaqefotvdzns +qwugbihrkplemcjjxefotvdyns +qfuhbikrkplymcjaxefotvdzns +qhugbihrcplymcjaxefrtvdzns +qwugbmhnkplymcjnxefotvdzns +qwugbihrkplymmjaaefofvdzns +qwugbihrtplykcjaxefoxvdzns +qwugbihrkmvymcjaxefetvdzns +qwugbfjrkplymcjaxefotadzns +qwuibihrrplymcjaxefotvdznv +qwcgbihrkjlymcjzxefotvdzns +qwugbihrkplymcjuxefytvzzns +qwkgwihrkllymcjaxefotvdzns +qwugbihrkplymcpaxgfogvdzns +qwuvbihrkplymcdaxefotvdmns +qwtgbihrkplqmcjgxefotvdzns +qwuglihrkplnmcjaxefptvdzns +qbugbihrkplymcjawefotidzns +qwegbihrvplymcjaxefqtvdzns +qwugbihrgqlyncjaxefotvdzns +qwugbihrpplymcjaxefotvdeqs +qwugbihrkplypzjaxefbtvdzns +qwugbihrkpkyncjanefotvdzns +qwugbshrkplymcjaxefotfdzys +qwugbihrkpymmcjaxefotzdzns +qwugbphrkplymcjaxefotvdzru +qyugbihrkplamcjjxefotvdzns +qwugbihrmphymcjaxefotedzns +qwuafihrkplymcjaxefozvdzns +qwugwihrkplymcjaxwfotvdzws +qwugbihrkzlymcjaxjfotvdznz +uwugsihrkplypcjaxefotvdzns +qwugbihrkplymcjaxefotudzur +qwugbihrkplymcjoxefotfdzng +qwugbihxkplymcjamebotvdzns +qpugvihrkplymcjaxefotvdzhs +qwugbihrkplyocgaxefotvdzss +qwugbihrkplymcpaqekotvdzns +qwunbihrkplymclaxefitvdzns +qzugbihrkplsmcjaxebotvdzns +qvugbihrkplymcjsxefotvmzns +qwugbihrkprymcyaxkfotvdzns +qwugbihukplymcjaxefotzlzns +qwusbihrkplymcjaxwfotxdzns +qwugbihrwplymcjaxefbtcdzns +qwugbihrkplymcjpxefotkdons +qwugbihrkhlymcjaxefohvwzns +qwukbihrkplymxjaxefotvdzms +qwugbiprkplsmcjaxefotvdznm +qwugbqhrkplymcjawwfotvdzns +qwugbihrkprymcjaxefotvdxnb +qwugbihrkplymcjaxefoivpzos +qwugbuhrkplymcjaxefotvdzsb +qwugblhrcplymcjaxefotvdyns +qtuabihrkplymejaxefotvdzns +qwucbihrkplyvcjaxefotvdznu +rwugbyhrkplymcjaxefotvdzrs +qruybihrkpsymcjaxefotvdzns +qwugbihrjpwymcjaxejotvdzns +qwugbihshplymcjaxefoavdzns +vwugbihrkplymwjaxefotvdznc +qwugbihrkpmymcjvxcfotvdzns +qkxgbihrkplymcjnxefotvdzns diff --git a/2018/02/sol1.pl b/2018/02/sol1.pl new file mode 100644 index 0000000..8d5ffba --- /dev/null +++ b/2018/02/sol1.pl @@ -0,0 +1,28 @@ +use 5.20.0; +use warnings; + +use experimental qw/ + signatures + postderef +/; + +use List::UtilsBy qw/ partition_by /; +use List::AllUtils qw/ pairmap sum product /; + +my @items = + map { + +{ + pairmap { scalar @$b => $a } + partition_by { $_ } + @$_ + } + } + map { [ split '' ] } + <>; + +say product + map { scalar @$_ } + map { + my $x = $_; + [ grep { $_->{$x} } @items ] + } 2, 3