diff --git a/app/Main.hs b/app/Main.hs index 229a919..1f78771 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -30,4 +30,4 @@ import qualified Day24 import qualified Day25 main :: IO () -main = Day01.main +main = Day02.main diff --git a/input/02.txt b/input/02.txt new file mode 100644 index 0000000..32b0592 --- /dev/null +++ b/input/02.txt @@ -0,0 +1,250 @@ +qcsnyvpigkxmrdawlfdefotxbh +qcsnyvligkymrdawljujfotxbh +qmsnyvpigkzmrnawzjuefotxbh +qosnyvpigkzmrnawljuefouxbh +qcsnhlpigkzmrtawljuefotxbh +qcsnyvpigkzmrdapljuyfotxih +qcsnbvpiokzmrdawljuerotxbh +qcfnyvmigkzmrdawljuefotdbh +qcsnynpigkzmrdawljuefptxbp +qcsgyapigkzmrdawljuafotxbh +qcsnyvpigkzmrdapljueeotibh +qcfnyvpigkzmndawljuwfotxbh +qzsayvpigkzmrdawijuefotxbh +qcsnsvpiekzmrdawljfefotxbh +ncsnyvpigkzmrdaaljuefotxzh +qssnyvpigkzmrdawljuefotobg +qcshyipigkzmrdajljuefotxbh +qcsnyvtigkzmrdawljgeaotxbh +qcsnkvpxgkzmrdawljuefltxbh +qcsnyvpiikzmrdawljuwfoqxbh +qcsnybpigwzmqdawljuefotxbh +qcsiyvpipkzbrdawljuefotxbh +qldnyvpigkzmrdzwljuefotxbh +qcsnyvpwgkzcrdawljuefmtxbh +qcsnyvnigkzmrdahmjuefotxbh +qcsnydpigkzmrdazljuefotxnh +qcsqyvavgkzmrdawljuefotxbh +ucsnyvpigkzmrdawljuefocxwh +qcsnivpigrzmrdawljuefouxbh +tcsnyvpibkzmrdawlkuefotxbh +qcstytpigkzmrdawsjuefotxbh +qcynyvpigkzmrdawlluefotjbh +qcstyvpigkqrrdawljuefotxbh +icsnyvpizkzmrcawljuefotxbh +qcsnyvpimkzmrdavljuezotxbh +qvsnoupigkzmrdawljuefotxbh +qcsnyvpigkzmrdawwjuefftxgh +qcpnyvpijkzmrdvwljuefotxbh +qcsnyvpigkzmxdakdjuefotxbh +jcsvyvpigkqmrdawljuefotxbh +qcwnyvpigczmrsawljuefotxbh +qcsnyvpdgkzmrdawljuefoixbm +qysnyvpigkzmrdmwljuefotxbp +qcsnavpigkzmrdaxajuefotxbh +qcsfkvpigkzmrdawlcuefotxbh +qcsnyvpigkvmrdawljcefotpbh +qcsnyvpiqkkmrdawlvuefotxbh +qhsnyvpigkzmrdawnjuedotxbh +qasnlvpigkzmrdawljuefotxkh +qgsnyvpigkzmrdabpjuefotxbh +jcsnyvdigkzmrmawljuefotxbh +qcsnivpigkzmrdawljuefonxth +qcsnyjpigkzmrdawljgefotxmh +qcstyvpigkzmrdacljuefovxbh +qcsnvvpigkzmrdawljuewotrbh +qcsnyvaigdzmrdawljueuotxbh +qcsnyvpegkzmwdawljzefotxbh +qcsnevpngkzmrdawlouefotxbh +qcsnuvpigozmrdawljuefotdbh +qgsnyvpigkzmqdayljuefotxbh +qcsnyvpigkzmrdcwdjuofotxbh +qcnnyvpigkzmrzawljuefstxbh +qlsgyvpigkzmrdtwljuefotxbh +qcsnyfpigkzlroawljuefotxbh +qcsnkvwigkzmrdowljuefotxbh +qcsnrvpigkzmrdawljuvfltxbh +qcsnyvpigkzvreawljuefotxmh +qcsrgvpigkzmrdawliuefotxbh +qysnyvpigkzmrdawlxaefotxbh +qcsnyvpigizmrdlwljuefotxbi +qzsnyvpitkzmrdawljuefbtxbh +qzgnyvpigkzmrdawljuefotxih +qcsnyvpigkzmrdawlguefvtxbb +qcsnyvpigkzmidawljuefouxjh +qksnyvpigkzmrdawlruefotxhh +qcsnyvpinkzmrdaaljuefotxah +qcsnxvpigkzjrdawljuefhtxbh +qcsnyvpigkzardawlgueuotxbh +qcsnyvpiakzmrdpwljuefotxbt +qcsnyvpigkzmrdawkjuefotxgb +qcsnyvpigkzmrdawljuehocsbh +qcsnsvpigktmrdawljuefotxvh +qusnrvpigkzrrdawljuefotxbh +qcsnyhiigkzmrdawrjuefotxbh +qcsnavpigkzmrdawlfuefotxbz +qcsnyvpigkzmmdamsjuefotxbh +qcsnyvzigkzmrdcwljmefotxbh +qcsnyvpigkzmriawljuefotbbe +qcsnyvpigksmrdawljaefotxbd +qcsnyvpigkzfrdawljuefoxxmh +qcsnyvpygkrmrdawljuefotxbi +qcsngvwigfzmrdawljuefotxbh +qcsnyvpigkmkrdauljuefotxbh +qcsnyvpigxzmrdgwljuefwtxbh +qconyapigkzmrdaxljuefotxbh +qcsnydpigkzwrdawljulfotxbh +qcsnyvpimkzmmdawljuefotxch +qcsnkspigkzmrdawgjuefotxbh +qcsnyvpigkzmrdhwljfefbtxbh +qcsnyipijkztrdawljuefotxbh +qcseyvpigkrhrdawljuefotxbh +qcsnyvpivkzmrdawljuefottbb +qcsnyvpigkzmrdawlouefcjxbh +qcsnyvpigkzmrgayljuefotxbm +qcsnyvpvgkzmrdawrjujfotxbh +qcsnyvpigkzmndawljuefqtxch +qcsnyvpigbzmrdawljuefotibg +qcsnyvpigkzmseawljuefotxbv +qcsnwvpigkzmraawnjuefotxbh +mcsnyvpiqkzmrdawljuefotlbh +bcsnyvpigczmrdmwljuefotxbh +qcsnyvpigkzmrtawljuegntxbh +qcsnyvpijkzmrdawlmrefotxbh +qdsnyvpfgkzmrdawljuekotxbh +qcsnyvpigkzmrdawcjfegotxbh +qcslyvphgkrmddawljuefotxbh +qcsnyvpigkzmsdawkjuefojxbh +qzsnyvpigkzmrzawljuefmtxbh +qcsnyvpqgkzmcdawljuefttxbh +qcsnyvpbgkpmrdawljuefoqxbh +qcsnyvpigkemrdywljmefotxbh +qcsnyypigkzmrdawljmefotxwh +jcsnyvhwgkzmrdawljuefotxbh +qcsnyvpigkzmrdawljurlotxwh +qcsnnvpigzzmrdawljuefotwbh +hcsnyvpigkzmrdarljuefitxbh +qcsnyvpilkzmrfawljuefotsbh +qcsnynpigkzmldawijuefotxbh +qcsnyvpkgkjmrdawljuefotxlh +qcsnylpigkzprdawljgefotxbh +qcsnyvpigkzmrrawljnefohxbh +qcsnivpigkzmrqawlbuefotxbh +qcsgyvpigkzmrfawljuefotbbh +qccuyvpigkzmrdawyjuefotxbh +gcsnyvpigkzjrdawljuefotxby +qcsmyvpiekzbrdawljuefotxbh +qcsnyvpzgkrmrdawljuefotxbs +qesnyvpigkzmpdqwljuefotxbh +qcsnyvpigqzmrdawljuefutibh +qcdnyvpigkzirdawljfefotxbh +qcsnyvpiukzmrcrwljuefotxbh +qcsnbvpickzmrdswljuefotxbh +qcsnyvpighzmrpadljuefotxbh +qccnyvpigkzmrdawljudxotxbh +qcsnyvpigkzmrdabljuesotxlh +qcsnyvpigkzmrrawlruefozxbh +qconyzpigkzmrdawljuefotjbh +qclnyvpigkzmrdxwljuefotbbh +qcsnygpigkzmrdawlhuefooxbh +qcsnyvpigkzmvdawljuefntxnh +qcskyvpigkzmreawljuefotubh +qrsnyvpxgkzmrdawljuefotxbz +qclnyvpigtamrdawljuefotxbh +qcsnyvpigkzmrdawojxefoyxbh +qcsnyvpinkzmrdakljuwfotxbh +qcsnyvpiykzmedawljuefgtxbh +qcsayvpigkcmrdawijuefotxbh +qcsnyvuiekzmrdamljuefotxbh +qcdnyvpigkzmrdawnjuefoxxbh +qcsnfvpwgszmrdawljuefotxbh +qcsnycpigkzmrdawljqefotxih +qcslyvphgkrmrdawljuefotxbh +ecsnyvpigkzmrdawykuefotxbh +qcsayvpigkzmraawljuekotxbh +qcsnyvpigkdmrdawljuewofxbh +qcznyvpigkzqrdawljuefotxnh +qcsnyvplgkzmrdawljiefotlbh +qcsnyvpigkzmroewljuefotbbh +qcvnyvpigkzvrdawujuefotxbh +qcanyypigkzmrdaeljuefotxbh +qcsnyvwigkzmrdewljuefotxqh +qcsryvpigkvmrdawljuefotabh +pcsnyvpigkwmrdawljueforxbh +qcsncvpigkzmrdawljuefotwmh +qcsnyvpigozmrdawljudfozxbh +qcsnynpigkzmrbawhjuefotxbh +qcsnyvuigkzmrqawljuefotxch +qcsnyvpickzmrdawljueeofxbh +qcsnyvpigkzgrdawljueiouxbh +qcsnyvpigkztrdawljuxnotxbh +qcsnyvpigwzvrdawljfefotxbh +qcsnyvpilkzmrdawljuefotxcz +qcsnjvpigkzmrdawljuefoywbh +qhsnyvpigyzmrdawljuhfotxbh +qcsnyvpirkzmfdawljuffotxbh +qcsjyvpigkzmvdawljuefotxzh +qcszivpirkzmrdawljuefotxbh +qwsnyvpigkzmtdawljuefetxbh +qcrntvpigkzordawljuefotxbh +qrsnyvpigkzmsdawljrefotxbh +qcsnyviivkzmrdazljuefotxbh +ecsnyvpigkzmrdawyjuefotxbw +qnsnyvpkgkzmrdawljueqotxbh +qcsyyppigkzmrdawljuefotxba +qcsnyvpigkzhrdpwljuefouxbh +ucsnyvpigkzmrdawojuefouxbh +qysnyvpigkzmrdawljukfotxbd +qcjnyvpigkzmrdalljfefotxbh +fcsnyapigkmmrdawljuefotxbh +qcnnkvpigkzmrdawljuefctxbh +ocsnyvpigkzmsdawljuefotxbl +qcsnyvpiakomrdawpjuefotxbh +qcsnyvpigkzmrdawljvefbtxwh +qcsnuvpigkzmvdfwljuefotxbh +qcsnyapihkzmrdagljuefotxbh +qzsnyvpigkzmrdawtjuefotxgh +qcsnyvpigkzmrdawljuefomyah +ocsnyvpigkzqrdawljuefotxbt +qnsnyvpigkzmrdawljvevotxbh +icsnyvpigkzmrdawljuefntxbt +qcsnyvpigkzdrdawljuefotbbm +scsnyvpigkzmrgawljuofotxbh +qcsnydpigkzmrdowljuefotkbh +qcsnyvtikkzmrdawljuefolxbh +qcsiyvpigkcmrddwljuefotxbh +qyrnyvpigkzmodawljuefotxbh +pcsndvpfgkzmrdawljuefotxbh +qcsnyvkigkhmriawljuefotxbh +qcsnyvpigkzmsdmwlkuefotxbh +dosnyvpigkzmrdawdjuefotxbh +qcnnnvpigkzmrdzwljuefotxbh +qcsnyvpivkumrdailjuefotxbh +qcsnyvpigkzmrdswljuzfotxbz +qcscynpigkzmrdawljuefotxbc +qeanyvpigkzmrdawijuefotxbh +qclnylpigkzmrdawljuefotxyh +qcsnyvpigkzmrdawljbefowxbp +qcsnyvpagkzmrdawljuefolebh +qxsiyvpigkzmrdawljuefotxgh +qcsnyvpigkynrdawljuefoqxbh +qcsnevpigkzmrdxwgjuefotxbh +qcsnyvpdgkzlrdawljeefotxbh +qcsnyvpigkzmrgawljxbfotxbh +ecsnyvpigkzmrdbwbjuefotxbh +qcsnyvpigkzmraawujuefocxbh +qcsnyvpihkzmrdawljuefouxbn +fgsqyvpigkzmrdawljuefotxbh +qcsnyvpigkmmrdawajuefotnbh +qcsnyvvigkzmrdahljudfotxbh +qcsnyvpixkzmrdqwljutfotxbh +ncsnyvpickzmrdawljuehotxbh +qcsnyvpizkzmrdawlpuefotxbp +wcsnyvfigkzmrdakljuefotxbh +qcsnyvpigkznrdhwljupfotxbh +jcsnyvpigkpmzdawljuefotxbh +qcsnyppigkkmrdawljujfotxbh +qcsnyvpigkumrdaeljuefodxbh +qcsnyvhigkzmrdrwljuefodxbh +qcsnyvpigkacrdawtjuefotxbh +qcsnyvpigkzmylawlquefotxbh diff --git a/src/Day02.hs b/src/Day02.hs index 493d4d3..62cd322 100644 --- a/src/Day02.hs +++ b/src/Day02.hs @@ -1,6 +1,16 @@ module Day02 (main) where +import Data.List (group, sort, (\\), intersect) + +part1 :: [String] -> Int +part1 strs = (length . filter (count 2) $ strs) * (length . filter (count 3) $ strs) + where count n = any (== n) . map length . group . sort + +part2 :: [String] -> String +part2 strs = head [ls `intersect` rs | ls <- strs, rs <- strs, length (ls \\ rs) == 1] + main :: IO () main = do - input <- readFile "input/02.txt" - print input \ No newline at end of file + input <- lines <$> readFile "input/02.txt" + print $ part1 input + putStrLn $ part2 input \ No newline at end of file