Skip to content

Commit

Permalink
2024-12
Browse files Browse the repository at this point in the history
glguy committed Dec 12, 2024
1 parent 392dafa commit bd551f9
Showing 3 changed files with 200 additions and 0 deletions.
140 changes: 140 additions & 0 deletions inputs/2024/12.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
OBBBBLLLLLLVVVVVVVVVVVVVVMMMMMMMMMMMMMMMMMMMMMJJJJJJJJJJOOOOOOORRRRRRRRRRRRRRRRRRRRXXXXXXXXXXXXXXXUUUUXBXXAXXDDDDDDNNNNNNNNNNNNNNNNTTTLHHLLL
OBBBBBLLLLLLVVVVVVVVVVVVVVVVSSMMVVVMVVMMMMMMMMLJJJJJJJJJOOOORRRRRRRRRRRRRRRRRRRRRRRXXXXXXXXXXXXXXXUUXUXBXXXXXDDDDDDNNNNNNNNNNNNNNONTLLLLLLLL
OBBBBBLLLLKKKKKVVVVVVVVVVFVSSSSMMMVVVVVMMMMMMMLLJJJJJJJJJOOOOORRRRRRRRRRRRRRRRRRRRDDDXXXXXXXXXXXJXXXXXXXXXXXXDDDDDDDNNNNNNNNNNNNNNNTLLLLLLLL
OJXXXJJLLLLKKVVVVVVVVVVVVFVSSSSSMVVVVVVMMMMMMMLLJJJJJJJJOOOOOQQRRRRRRRRRRRRRRRRRRRDDPPXXXXXXXXXXJXXXXXXXXXXXXXXXDDDDDNNNNNNNNNNNNNTTLLLLLLLL
OJXXXJJJLLKKWVVVVVVVVVVFFFSSSSSMMVZVVVVVMMMMMLLLJJJJJGGGOOOOQQQRWRRRRRRRRRRRRRRRRRRRPYXXXXXXXXXXJXXXXXXXXXXXXXXXDDDDDNNNNNNNNNNNNLLLLLLLLLLL
JJXXJJJJJJJJVVVVVVGGGFFFFFSSSSSSMMVVRWWLLMMMLLLLJJJJJJGGOGOQQQQQWRRRRRRRRRRRRIRPRRPPPPPPXXXXXXXXJXMXXXXXXXXXXXXXDDDDNNNNNNNNNNNNNNEELLLLLLLL
JJJJJJJJJJJJJJJVVGGGGFFFFFFFFSSSMMMMWWWWLLMMLLLLLLJJJGGGGGGQQQQQQRRRRRRRRRIRRIPPPPPPPPPPXXXXXXXXXXMMXXXXXXXXXXXXXXDDNNNNNNNNNNNNNNNELLLLLLLL
JJJJJJJJJJJJZZZZGGGGGGGGGGGFSSSMMMMMWWWMWLLLLLLLLLJLGGGGGGGGQQQQQQQQRRRRIIIRIIPPPPPPPPPXXXXXXXCXXXMMHMXXXXXXLXXXDDDDDDNNNNFFNNMNJJLLLLLLLLLL
JJJJJJJJZZZZZZZZXGGGGGGGGGGGTGSMMMMMWWWWWLLLLLLLLLLLLGGGGMGGQQQQQQQQRRRRIIIIIIPPPPPPPPPXVVVTTXCCXXMMMMXXXXXXLLXXDDDDDDDNDNNNDNNJJJJLLLLLLLLL
JJJJJJJJJZZZZZZGGGGGGGGGGGGGGGGMMMMWWWWWWWWLLLLLLLLLLLGGGGGQQQQQQQQQQRRQGIUIIIIPPPPPPPPPVVVTXXXXXXMMMMXXXXLLLLLLDDDDDDDDDDDDDNNJJJJJJLLLLLLL
JJJJJJJJJJZZZZZGGGGGGGGGGGGGGGGGMMWWWWWWWWWWLLLLLLLLLGGGGGGQQQQQQQQQQQQQQQUIIIKKPPPPPPPPVVVVVXXXXXXMMMXXXLLLLLLDDDTTDDTDDDDDDDDJJDJJJLLLLLLL
JJJJJJJJJJZZZZZZGGGGGGGGGGGGGGGGMWWWWWWWWWWWWWLLLLLGGGGGGGGQQQQQQQQQQQQQQQIIKKKPPPPPPPPPPPVVPPPXXXXMMXXXXXLLLLLLTTTTTTTTTDDDDDDDDDJJJJZLLLLL
JJJJJJJJJJZZZZZZGGGGGGGGGGGGGGGGWWWWWWWWWWWWWLLLLLLGGGGGGGGQQQQQQQQQQQQQQQIIKYYPPNLPPPPPPPPVPPPXXXXXXXXXXXLLLLLTTTTTTTTDDDDDDGDDZDJJJJJLUUUL
JJJJJJJJJZZZZZZZZZGGGGGGGGGGGGGWWWWWWWWWWWWVVLLLLLLGGGGGGQQQQQQQQQQQQSQQYYIIIYLLPLLLLPPPPPPPPXXXXXXXXXXXXXXLTTTTTTTTTTHDDHDDDGDDDCCJJJJJUUUU
JJJJJJJJZZZZZZZZZZZGGGGGDGGGFFWWWWWWWWWWWWWVVVLLLLLGGGGGGQQQQQQQQQQQSSQYYYYIYYYLLLLLLLPPPPPPPXXXXXXXXBBXXRXTTTTTTTTTTTHHHHHHYHHRRCCJJJJJJUUU
ZJJJJJJJJZZZZZZZZZGGGGGGGUUUFFFFFWWWWWWWWWWVVVLLLLLLLLGGIQQQQQQQQQQSSYQYYYYYYYYLLLLLLLPPPPPPXXXXXXXXXXTTXTTTTTTTTTTTTIHHHHHHHHRHCCCCEJJJUUUU
ZJJJJJJJJZZZZMMZZZZGAAGGFFFUFFFFFWWWWWFFVQWVVVVVVLLLLLGGGQQQQQQQQQQQQYQYYYYYYYYYYLLLLLLLPPXXXXXWXXXXXTTTTTTTTTTTTTTTTILHHHHHHHHHEDDEEJJJUUUU
ZZZZZJJJZZZMMMMZZZZZAAGAFFFFFFFFWWWWWWWWVVVVVVVVLLLLLGGGGAAAAQQQQQQYYYYYYYYYYYYYYYLLLLLLXXXXXXXXXXSXQQTTTTTTTTTTTTTTIIIIHHHHHHHHHDDDDDUUUUUU
ZZZZZZZZZZMMMMMZZZZZAAAAFFFFFFFFFWWWWWWVVVVVVVVAALAAAGJJJAAAAAQQQQYYYYYYYYYYYYYYYYLLLLWLXXXXXXXXXXXXTTTTTTTTTTTITTITIIIDHHHHHHHHPDDDDDUUUUUU
ZZZZZZZZZMMMMMMMZMZMAAAAAFFFFFFWWWWWWWWVVVVVVVAAAAAAAGJJJJAAAADDDYYYYYYYYYYYYBBBYYLLLLWWWWXXXXXXXXXBTTTTTTTTTTTITIIIIIIDDDHHHHHDDDDDDUUUUUUU
ZZZZZZZZMMMMMMMMMMMMAAAAAAAAAAFFDWWWWSSVVVVVAAAAAAAAAAAJJJAAAAADDYYYYWYYSYYYYBBGYYYDDXXXXWXXXXXXXXXBBBTTTTTTTTIIIIIIIIIIDDDDHHHDDDDDDUUUUUUU
ZZZZZZZZZMMMMMMMMAAAAJEEEEAAAAAFDDWWLLLBBBBVAAAAAAAAAAAJJJAAAAYYYYWZWWWYSYYSYBBYYSDDDXXXXXXXXXXXXXXBBBTTTTTTTIIIIIIIIIIIDDDDDHHDDDDDUUUUUUUU
ZZIIZZZMMMMMMMMMMAAAAAEEEEEAAAAALLLLLLLLLVVVOAAAAAAAAAAJJJJAAYYYYYWWWWWWSSSSSSSSSSDDXXXXXXXXXXXXXXXBBBBTTTTTGGGOIIIIIIIIDDDDDDDDDDDDUUUUUUUV
IIIIZZZZZMMZMMMMMMMAABEEEEEAAAAAALLLLLLLLBVVVAAAAAAAAAJJJJJJYPPYYYWWUWWWSSSSSSSSSSDDDDXXXXXXXXXXXXXXBBBTBBTTGGGGIIIIIIIIDDDDDDDVVIVVVVUUUVVV
GGIIIIZZZZZZMMMMMMYAEEEEEEEEAAMMMLQLLLLLLBBVGGGAAAAAAAGGJJJJYYYYYYYYUWZWSSSSSSSSDDDDDDXXXXXXXNNXXXXBBCBBBBBTGGGCIIIIIIIIDDDDDDVVVVVVVUUUUVVV
IIIIIIIIZZMMMMMMMMYYEEEEEEJEAAMMMQQQLLLLLLBGGGGGAAASAAGGJJJJYYYYYYYWWWWSSSSSSSSDDDDDDDXXXXXXXNXXXXXBBCBBCBBCCGCCCICIIIIDDDDDDDVVVVVVVVUUUVVV
IIIIIIIIIIMMMMMMMMMYYEEEJJJJAMMMMMMLLLLLDBBBBBBGGGAAAAGGJJYYYYYYYYYYWKWSSSSSSSSSDDDDDWWWWWWXNNXXNXXBCCCCCCBCCCCCCCCIDDDDDDDDDVVVVVVVVVVVVVVV
IIIIIIIIIIMMMMMMMMYYYYYEJJJJAMMMMMMMMMBLBRBBBBGGGGGGGGGGJJJYYYYYYYYYSSSSSSSSSSSSSSDDWWWTWWWNNNNNNWCCCCCCTCCCCCQCCCCDDDDDDDDDDDVVVVVVVVVVVVVN
IIIIIIIIIIQMMMMMMMYYYYYEMMMMMMMMMMMMMBBBBBBBBBBGGGGGGGGGGJJJYYYYYYYSSSSSSSSSSSSSSSSSWWWWWWWNWNNNCCCCCCCCTCCCCCQCCCCDDDDDDDDDDDDDVVVVVVVVJVVV
IIIIIIIIIIIIMMMMMMYYYYYYYYYYMMMMMMMBMBBBBBBBBBBGGGGGGGGGGYJYYYYYYYYYSSSTSSSSSSSSKWWWWWWWWWWWWNNNNNCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDVVVVVVVVVVVV
IIIIIIIIIIIIIMMMMZYYYYYYYYYYMMMMMMMBBBBBBBBBBBBGGGGGGGGGYYYYYYYYYYYYYSSTSSSSSSHSKWWWWWWWWWWWWNNNNNCCCCCCCCCCCCCCCCBDDDDDDDDDDDVVVVVVVVVVVVVV
IIIIIIIIIIIIMMMIZZZZYYYYYYYYYMMMMNBBBBBBBBBBBBGGGGGGGQQQGGYYYYYYYYYYYYYYYSSSSSSSWWWWWWWWWWWWWWNNNNCCCCCCCCCCCCCCCCBDDDDDDLDLDDVVVVVVVVVVVVVV
IIIIIIIIIIIMMZZZZZZZYYYYYYYYYYMNNNNBBBBBBBBBBBBBBGGGGQQQYYYYYLLYYYYYYYYSSSSSSSSSSWWWWWWWWWWWWWNNNNNNCCCCCCCCCCCCCCCCRRRDDLQLLDVVVVVVVVVVVVVV
IIIIIIIIIOIOMRZZZZZZYYYYYYYYYYMMNBBBBBBBBBBBBBBBGGGGGQQQYYFYBLLYYYYYYYYSNSSSSSSSSWBBHWWWWWWWSSNCNNCCCCCCCCCCCCCCCYYYRRRRLLLLLDLQVLVVVVVVVVVV
IIIIIIIOOOOOMZZZZZZZYYYYYYJJYYMMBBBBBBBBBBBBBQQBGGGQQQQQFFFBBLLLYYYLYYYSNNSBBBZSSSBBWWWHWWWWWWNCNCCCCCCUCCCCCCCCYYUYRRRRLLLLLLLLLLVVVVVVZVVV
IIIIIOIOOOOOOZZZZZZYYYYYYJJJJYYIMBBBBBBBBBBBBBQQGGGQQQQQTWBBBLLLYYYLYYYYNBBBBBBBSBBBDWWWWWWWWWCCNCCCCCCUCCCCUUUUUUUURRRLLLLLLLLLLLLVVVZVZVVV
IIIOOOOOOOOOZZZZZZZZZZYYYJJJYYYIIIIBBBBBBBBBBBQQQGGQQQQQWWBBBBLLYYYLLNNNNNNBBBBBBBBBDDWWWIIWWWCCCCCMMMMMCCCUUUUUUUUURRLLLLLLLLLLLLLVZZZHHYYY
IIIIOOOOOOOOZZZZZZZZZZYYYYYYYYITIIIIBBBBBBBBBBQQQGGQQQQQWWLBLLLLLLLLLLNNNNBBBBBBBBBBBDDDIIIWWWCCCCCMMMMMCCCUUUUUUUUURRLLLLLLLLLLLLLLLZZHHHYH
IIIIOOOOOOOOOZZZZZZZZZYYYYYYYIIIIIIIIBBBBBBBDDQQGGGQQQWWWWLLLLLLLLLLLLNNNNBBBBBBBBBBBDDDIIWWCCCCCMMMMMMMUCUUUUUUUUUIRRLLPPLLLLLLLLLLLLZHCHYH
IIIIIOOOOOOOZZZZZZZZZZYYYYIIIIIBIIIIIBBBBMCBDDDDGGGQQQWWWWLLLLLLLLLLLLLNNBBBBBBBBBBBKBBDFFWWWCCCCMMMMMMMMUUUUIUUUUUIIRLPPPPLLLLLLLLLLLHHHHHH
IIIIIOIIOOOOZZZZZZZZZYYYYYYYIIBBIIIIIBMMMMCCDDDDDDGGWWWWWWLLLLLLLLLLLLLLNBBBBBBBBBBBBBVDQFFCCCCCCMMMMMMMIIUIUUUUUIIIIIPPPPPPLLLLLLLLLLHHHHHH
IIIIIIIIIOOOFZZZZZZZZZYYYYYYBBBBBBBIIIIIICCCDDDDDDGDDDDWWWWWWLLLWWLLLGGGBBBBBBBBBBBBBBBAFFCCCCCCCMMMMMMMMIUIIUUIIIIIIQPPPPPLLLLLLLLLLLHHHHHH
IIIIIIIXIIFFFZZZZZZZZZZYYYYYBBBBBBIIIITCCCCDDDZZDDDDDZZWWWWWWWWLLWWLLLGGIIIIIBBBBBBTBBFFFFCCCCCCCCMMMMMMMIIIIIIIIIIIIQQPPPPPLLLLLLLLLLHHHHHH
IIIIIIIXIFFFFZZZZZZZZZZYYYBBBBBBBBIIIIICCPPDDZZZDDDDDZZWWWWWWWWWWWWLLGGGIIIIIBBBBOBTBFFFFFCCCCCCCCCCMMUMIIIIIIIIIIIIQQQQPPPLLLLLLHHHHHHHHHHH
IIIIIIIXIFFFFFFZZZZZZZZBBBBBBBBBBBDICCCCCCPDPZZZDDDZZZZZWWWWWWWWWWWGGGGGIIIIIBBBBTTTTTFFFFCCRRCCCCCCCMVIIIIIIIIIIIIIIQQQPPQLQLLLLHHHHHHHHHHH
IIIIIXXXIIFFFFFXXZZZZZZBBBBBBBBBBBBCCCCCCCPPPIZZZZZZZZZZZZZWWWWWWWWGGGKKIIIIIBBBTTTTTTFFTTTRRRCCCCCCZMVVIVIIIIIMMIIIIQQQQQQQQQQQLQHHHHHHHHHH
IIXXXXXXFFFFFFFFFZZZZZBBWBBBBBBBBBBCCCCCCCCPPZZZZZZZZZZZZZZWWWWWWWWWKGKKIIIIIBBTTTTTTTFFTTRRRRRCCCCVVVVVVVIIIIIMMIIIIIQQQQQQQQQQQQQQHHHHHHHE
IVXXXXXXXFFFFFFGFZZZZZBWWBBBKKBBBBNNCCCCCPPPPPPZRZZZZZZZZZWWWWWWWKKKKKKKIIIIITTTTTTTTTFFTTRRRRRCVVVVVVVVVVVIIGGMMMIIIIIIXXQQQQQQQQQHHHHHRRRE
IVVXXXXXXAFFFFFFFFZZZZZZBBBKKKKBBNNCCCCCCCPPPPPPRZZZZZZZZWWWWWWWKKKKKKKKIIIIIGTTTTTTTTTTTTXRRGGGGVVVVVVVVVVVGGGMMMMMMMIIXXQQQQQQQQQHHHRHRRRE
VVVVVXSTXTTFFFFZZZZZZZZBBKUUUUUKKCCCCCCCCPPPPPPPPZZZZZZZZWWWWWWWIIKKKKKKIIIIITTTTTTTTTTTTTXGGGGGGVVVVVVVVVVVGGGMMMMTMMXXXXQQQQQQQNNNHRRRRRRE
VVVVVVVTTTTFFFSZZZZZZZZZKKUUUUUKKCCCCCPPCPPPPPPPPZZZFFFZPPWWWWWWIIKKKKKKIIIIITTTTTTTTTTXXXXXGGGGGVVVVVVVVVVVMMMMMMMMEEXXXXOXQQQNNNNNHWRRRRRR
VVVVVVVVTTTTZFZZZZZZZZZZZZUUUUUKKKKCCCCPPPPPPPPPPZZZZFFZPPPWSWWWIKKKKKMKIIIIITTTTTTTTTXXXXXXXGGMMMMVVVVVVVVMMMMMMMMMEEXXXXXXXQQNNNNRRRRRRRRR
VVVVVVVVVTTTZZZZZZZZZZZZZZUUUUUKKKKKCCCPPPPPPPPPPZZFFFCPPPSSSSSWIKKKKKKKNNTTTTTTTTTTTTXXXXXGGGGMMMMVVVVVVVMMMMMMMMMWMXXXXXXXXXNNNNNRRRRRRRRR
VVVVVVVVVVTTZZZCCCZZZZZZZZUUUUUKKKKKOCCCPPPPPPPHPRZCCFCCSSSSSSSSIIIIIKKNNNNNNTTTTTTTTTXXXXGGGGMMBMMMMVVVVMMMMMMMMMMMMXXXXXXXXXXNNNRRRRRRRRRR
VVVVVVVVVVTTTZUFCCFZZZZZZDUUUUUKKKKKOOOIPMPPPPPPPRRRCCCCSSSSSSSSSISSSNNNNNNNNTTTTTTTTTTXGGGGGGMMMMMMMVVKMDMMMMMMMMMMXXXXXXXXXXXNNNNNRRRRRRRR
VVVVVVVVVTTTTZFFFFFWZZMMDDDDDDDDKKKOOOOOOMMPPPPPRRRCCCBCFSSSSSSSSSESSSNNNNNNNTTTTTTTTTTTAAGGGGMMMMMMMMMMMMMMMMMMMMMMGXXXXXXXXXXNNNNNRRRRRRRR
VVVVVVVTTTTTTTTFFFFFFDDDDDDDDDDDKKOOOOOOOMPPPPPPCRRRCCCCCCSSSSSSSSSSSNNNNNNNNNNNTTTTTTTTAAGGGMMMMMMMMMMMMMBMMMMMMMMMXXXXXXXXXXNNNRRRRRRRRRRR
VVVVVVVVVTTTTTTTFFFFFRDDDDDDDDDDKKOOOOOOMMMMPXXXCCCCCCCCCYSSSSSSSSSSSNNNNNNNNNNNNNNTTTTHHAGGGMMMMMMMMMMMMMMMMMMOOMMMOXXXXXXXXYXRRRRRRRRRRRRR
VDDDVVVVVTTTTTTTTBBBBRBDDDDDDDDDKOOOOOOOOOWWWWXXXCCCCCCCCCSSSSSSSSSNNNNNNNNNNNNNYNNAAATHHAAGGMMMMMMMMMMMMMMMXXOOOOOOOOOXXXXXXXXXRRRRRRRRRRRR
VDDDTTTTTTTTTTTTBBBBBBBBBDDDDKKKKKOOOOOOOZZWWWWWXXXCCCICSCSSSSSSSSSNNNNNNNNNNNYYYNNAAAAAAAAGGGMMMMMMHHMMMMXMXXOOOOOOOOXXXXXXXXXXSSRRRRRRRRRF
DDDDDTTTTTBBTTTTBBBBBBBBBDBBBKKKKKOOOOOOOOZWWWWWXXXXXKIISSSSSSSSSSLSNNNNNNNNNNYYYNNAAAAAAAAGGGMMMXMMHHMMMMXXTXOOOOOOXXXXXXXXXXXSSSRXRRRRRXRF
DDDDDTTTTTBBBBBMBBBBBBBBBBBBBKKKKOOOOOOOOOWWWWYWWXXKKKKSSSSSSSSSSSSSNNNNNYNNYYYYYYYAAAAAAAAAAGGMHXHHHMMMMMXXXXXXOQXXXXXNXXXXXHHPSSXXXXXXXXXX
DDDDDDTTTTDDDDDBBBBBBBBBBBBBKKKKKOOOOOOOOOWWWWWWWXXXXKKTTSSSSSSSSSSSNNNNNYYYYYYYYYLAAAAAAGGAAGGGHHHHHFMMZMXXXXXQQQQXQXQQXXXBXPPPPXXXXXXXXXXX
DDDDDDFFTTFSSSDBBBBBBBBBBBBBBBKKKKKOFFFOOOWWWWWWXXXXKKKKKKNSVSSSSSSSSNNNYYYYYYYYYAAAAAGGGGGGGGGGHHHHHHHZZZZXXXXQQQQQQQQQQXXBBBPPXXXXXXXXXXXX
DDDDDFFFTTFFSSSBBBBBBBBBBBBBBKKKKKKOFFFFFOFWXXWXXXXKKKKKKNNSSSSSISSSSNNNYYYYYYYYYAAAAGGGGGGGGGGGHHHHHHHZZZZXZZQQQQQQQQQQQQQQBBPPXXXXXXXXXXXX
DDDDDDDFFTFFAAVBBBBBBBBBBBBBBKBKKKKFFFFFFFFFXXXXXXXKKKKKKKNNNNNSSNSSSNNNNYYYYYYYYAYANYGYGYYYGGHHHHHHHHZZZZZZZZZQQQQQQQQQQQQQPPPPXXXXXXXXXXXX
DDDDDDFFFFFFAAAABBBBBBBBSBBBBBBWWKKQFFFFFFFXXXXXXXXXKKKKKKNNNNSSSNSSSNNLNYYYYYYYYYYYYYYYYYYYGGHEHHHHHKKZZZZZZZZQQQQQQQQQQQQPPPPPXXXXXXXXXXXX
DDDDFBFFFFFFAAAAABYBBBBBSSBXXXBWWQQQAFFFFFFXXXFFXXXXKKKKKKNNMNNNNNNNSNNNNYYYYYYYYYYYYYYYYYYGGGGHHHHHHKKKZZZZZZWQQQQQQQQQQBQPPPPPCCCCXXXXXXXX
DDDFFFFFFFFFAAAABBYYBBBBSSBXXXXXWQQQFFFFFFFXXXFFXXXXXXKKKKNMMMNNNNNNNNNNNNYYYYYYYYYYYYYYYYYGGGGHHHHHHKKZZZZZWWWQQQQWQQQWQQPPPPPPCCCXXXXXXXXX
DNDDFFFFFFFFAAAAABYYYBBBSSSXXXYXQQQQFFFFFFFFFQFFFFFFXXKKGGMMMMMFFNFNNNNNNNYYYYYYYYYYYYYYYYYGGGGGHHHHZZZZZZZZWFWQQQWWWWWWWWPPPCPPPCCXXXXXXXXC
DNUUAFFFFFFFAAAAAAYYYBBBBBXXXXXDQQQQFQQFFFQQQQFFFFFMMMGGGGMMMMMFFFFFNNNNNNNTYYYYYYYYYYYYYYPGGGGHHHHHZZZZZWWWWWWAQWWWWWWWWWMCCCCCCCXXCXXXCXXC
UUUUUFFFFFFFFAAAAYYYYYYBYYXXXDDDQQQQQQQQQFQQQQFFFFMMMMMGGMGFFFFFFFFNNNNNNHNTTTYYYYYYYYYYYYPPPPGHHHDZZZZZWWWWWWWWWWMWWWMMMMMMCCCCCCCCCXXXCCXC
UUUUFFFFFFFFFFAAAYYYYYYYYYYYXDDQQQQQQQQQQQQQXXFFMMMMMMGGMMFFFFFFFFNNNNNNNDTTTTYYYYYYYYYYPPPPPPPPNNZZZUZUUWWWWWWWWWMMMMMMMMMMCCTTTTCCCXXPCCCC
UUUUFFFFFFFFFFAAAAYYYYYYYYYYHHDQQQQQQQQQQQQQQQQMMMMMMMMGMCCFFFFFFFFNNNNDNDDDDDDCCAAYYYYYPPYYPPTTZZZZZZZZWWWWWWWWWMMMMMMMMMMMMCTNNNPPPPPPCCPC
UUUUFFFFFFFFFFFFAAYYYYYYYYYHHHDQQQQQQQQQQQQQQMMMMMMMMMMMMCCFFFFFFFFNNDDDDDDDDDDCCAAAYYYYYYYYYYTSSSSSZZSHYWWWWWWWWMMMMMMMMMMMMMKPPNPPPPPPPPPP
UUUUFFFFFFFFFFFFAYYYYYYYYYHHHHHQQKQQQQQQQQQQQQMMMMMMMMMMMMMFFFFFFFFMNDDDDDDDDDDCCCAAAAYYYYYYYYTSSSSSZZSSYYWYYYWWMMMMMMMMMMMMMMPPPPPPPPPPPPPQ
UUUUUUFFFFFFFFFFFFQQQYYYYYHHHHHKKKQQQQQQQQQQQQMMMMMMMMMMMMFFFFFFFFFFNDDDDDDDDCCCAAAAAAYYYYYYYYYSSSSSSSSSYYYYYYWWWWMMMMMMMMMMMMMMPPPPPPPPPPPQ
UUUUUUUFFFFQFFFQDQQQYYYYDHHHHHQHKKKKQQQQQQQQQQMMMMMMMMMMMUUFFFFFFFFNNNNDDDDDDCCAAAAAAAAYAYYYYYYSSSSSSSSSSYYYYYYWWQMMMMMMMMMMMMMMPPPPPPPPPPPP
UUUUUUUFFFFQQQQQQQQQDDDDDHHHHHHHKKKKQQQQQQQQQQMMMMMMMMMMMUUFFFFFFFFNNNNNDDDDDCCAZAAAAAAAAYYYYYYSSSSSSSSSYYYYYYYYYPPPPMMMMMMMMMMKPPPPPPPPPPPP
UUUUUUUFFFQQQQQQQQQQDDDDDDHHHHHHHHQQQQQQQQVQQMMMMMMMMMMMUUUUFFFFNNNNNNNNNDDCCCAAAAAAAAAAAYYYYYYYSSSSSSSSSYYYYYYYPPPPMMMMOMMMWWPPPPPPPPPPPPPP
UUUUPPUUUUUUUQQQQDDDDDDDDHHHHHHHHBBBQQQQQQVMMMMMMMMMMMMMUUUFFFFFNNNNNNNNNNDCCAAAGAAAAAAAYYYYYGBBBSSSSSSSSSYYYYPPPPPPPMMPPPMMWWWPPPPPPPPPPPPP
OUUUPPPPPIPPUQQQQLLLLDDHHHHHUUAAHBBBBBQBBBTBBBMMMMMMMGUUUUNNNFNFNNNNNNNNNNNCCCCAAAAAAAAAAYYYYBBBBSSSSSSSSSSYYYYPPPPPPPPPPPPMMWWWPPPPPPPPPMPP
OUUUPPPPPPPPUQQLLLLHDDDHHHHHUUAUUUBBBBTBBBTBBBBMMGGMGGUUUUNNNNNNNNNNNNNNNNCCCCCAAAAAAAAAAYYYYBBBSSSSSSSSSSSSYYYCPPPPPPPPPPPWWWWPPPPPPPPPPMPP
OOUPPPPPPPPPPLLLLLLHHHDDDHHUUUUUUUTTTTTBBBTTTBBBMGGGGGUUUUUNNNNNNNNNNNNNNNCCCCCCCAAAAAAAABCBBBBBSSSSSSSSCSSSSCCCPPWWPPPPPPWWWWPPPPPPPPPMMMMM
OOUOOPPPPPPPPLLLLLLLHHHHHHUUUUUUUUTTTTTTTTTTTTBBBGGGGUUUUUUNNXNNNNNNNNNNNNCCCCCCAAAAAAAAABBBBBBSSSSSSSSSCSCCCCCCCCWWPPPPPPPWWWWWWPPPPPPMMMMM
OOOOPPPPPPPPPLLLLLLHHHHHHHUUUUUUYYTTTTTTTTTTTTBGGZGGGUGGUUUNNNONNNNNNNNNNNNCCCCAAAAAAAAABBBBBBBSFFFFFFFFCSCCCCCCCCWWPPPPPPPWWWWWWPPPPPPMBMMT
OOOPPPPPPPLLLLLLLLLLLLHHUUUUUUUUUTTTTTTTTTBBBTBBGGGGGGGGGGUUNNNNNNNNNNNNNNNCCCCCAAAAAAAAABBBBBBBFFFFFFFFCCCCCCCCWWWWPPPPPPPWWWWWUUPUUPMMMMMM
OOOPPPPPPPPPLLLLLLHHLHHHUUUUUUUUUHHTTTTTTTBBBBBBGGGGGGGGGGGNNBNNNVNNNNNNNNNCCCCCCCAAAAHAAAABBBBSFFFFFFFFFFCCCCCCWWWWWWPPPWWWWWWUUUUUUMMMMMMM
OPPPPPPPPPPPPLLLLLLHHHUUUUUUUUUUUUHTTNTBBTBBBGBBGGGGGGGGGGGBBBNNNNNNNNNNCNNCCCCCCAAAAHHVABBBBBBBBFFFFFFFFFCCCCCCWWWWWPPPPPWWWWWUUUUUUMMMMMMM
YYXXPPPPPPHHHLHHLHHHHHRUFUUUUUUUHHHHTTBBBBBBBGGGGGGGGGGGGGGBBBNNNCCCCNCCCCCCCCCCCCHAAHJJJBBBBBBVCCCFFFFFFKKKKKKKKKKWWWPPPPWWUWWWUUUUUMMMMMMM
YYYYDPPYPPHHHHHHHHHHRRRRFUUUUUUUUUWWTTBBBBBGGGGGGGGGGGGGGGGBBBBCCCAPCCCPCCCCCCCHCCHHHHJJJBBBBBBVCCCCCFFFFKKKKKKKKKKWWPPPPPWWUUUUUUUUUMMMMMMM
YYYYYYYYPHHHHHHRRRRRRRRRUUUUUUUUUUWWBBBBBBBBGGGGGGGGGGGGGGGQBBQCCPPPPPCPPCCCCCCHHHHHHHJJJBBBBBBBCCCCCFFFFKKKKKKKKKKSPPPPJPWUUUUUUUUUUMMMMMMM
YYYYYYYYYHHHHHHHHRRRRRRRRUUUUUUUWWWBBBBBBXXXSGGGGGWGWGGGGGGQQQQQKPPPPPPPPCCCCCCHHHHHHHJJJHHHHHBBCCCCCFFFFKKKKKKKKKKPPPPPPWWWUUUUUUUUMMMMMMMM
YYYYYYYYYHHHHHHRRRRRRRRRRTTTUUUFWWWBBWWXXXXXSGGPWWWWWWPPGGQQQQQKKPPPPPPPPCCCCCCHHHHHHHJJJHHHHHBBCCCCCFFFFKKKKKKKKKKWPPPWWWWUUUUUUUUUMMMMMMMM
YYYYYYYYYHHHHVHRRRRRRRRRRTTTUDWWWWWWWWWZXXXXSSGWWWWWWWPPGQQQQXQKPPPPPPPPPCCCCHHHHHHHHHJJJXXHHHHXCCXCCFFFFKKKKKKKKKKWWWWWWWWWUUUUUUMUMMMMMMMM
YYYYYYYYYHHHVVHRRRRRRRRRRRTTTAWWWWWWWWWWXXXXXXTWWWWWWWWQQQQQQQQKPPPPPPPPPCCCHHAHHHHHHHJJJXXXHHXXXXXKKKKKKKKKKKKKKKKWWWZWWWWWWWWUMMMMMMMMMMMM
VYYYYYYYYVVHVRRRRRRRRRRRRRRTTAAWWWWWWWWWXXXXXXXWWWWWWWWWWQQQQDDDDDDPPPPPPCCCCHHHHHHHHHJJJXXXXHHXXXXKKKKKKKKKKKKKKKKWWWZZZWWWWWWUHMMMMMMMMMMM
YYYYYYYPPVVVVVVRRRRRRRRRRRRRTALWWWWWWWWWWXXXWWWWWWWWWWWWWQQQQDDDDDDPPPPPPPCCPHHHHHHHHXJJJXXXXXXXXXXKKKKKKKKKKKKKKKKWWZZZZZZZWWWUHMMMMMMMMMMM
YYYYYYYYPPSSSVVVRBRRRRRRRAAAAALWWWWWWWWWWWXRWWWWWWWWWWWWWQQQQDDDDDDDPPPPPPCPPHHHHHHHXXJJJXXXXXXXXXCKKKKKKKKKIIIIIIWWWZZZZZZZWZZOZMMMMFFMMMMM
TYYKYYXYPPSSWWVVBBBBBRRRAAAAAALWWWWWWWWWWQXRWWWWWWWWWWWWWQQQQDDDDDDPPPPPPPPPPHHHHHHHXXXXXXXXXXXXXXCKKKKKKKKKQQIIIIIWZZZZZZZZZZZZZOMMMMMMMMMM
TTYYBYYPPPSSSWSBBBBBBGGGAAAAAALWWWWWWWWWWWRRRWWWWWWWWWWWUUUDDDDDDDDPPPPPPPPPPPHHHHHMXXXXXXXXXXXXXXCKKKKKKKKKQLIIIIIIIVZZZZZZZZZZPPMGGGGGGMMM
TTYBBYQEPPPSSSSBBBBBBGGGAAAAALLWWWWWWWWRWRRRRWWWWWWWWWWWUUDDDDDDDDDPPPPPPPPPPPPHHHXXXXXXXXXXXXXXXXXKKKKKKKKKLLIIIIIPPZZZZZZZZZZZPPMGGGGGPMMM
TTYBBYQEEPPSSSSSBBBGGGGGAAAAAGLLLWWWWRRRRRWWWWWWWWWWWWWWZUDDDDDDDDDDPPPPPIPPPPPPPHHXXXXXXXXXXXXXWXXKKKKKKKKKLLILMIPPPZZZZZZZZZZZPPPGGGGPPPPM
TTTNNYQEPPPSSSSSBSGGGGGGGAGGAGLLWWWRRRRRRRWWWWWWWWWWUUWWZZZDDDDDDDDDDPIIIIIPPPPHHHHXXXXXXXXXXXXXWWLKKKKKKKKKLLLLMPPZZZZZZZZZZZZPPPPPPGPPYYPM
TNNNEEEESSSSSSSSSSSSGGGGGGGGGGGLVVRRRRRRRRRWWWWWWWWUUUXZZZZDDDDDDDDDIIIIIIPPPPPPEQQXXUXXXXXXXXXXWWLLLLLLLLLLLLLLMPPXXZZZZZZZZZZPPPPPPPPPPYYY
TNNNEEEESSSSSSSSSSSGGGGGGGGGGGLLVVVRRRRRRRRRWWWRWWUUUUZZZZDDDDDDDUDIIIIIIPPPPPPEEEEYXUUXXXXXKXXXWWWLLLLLLLLLLLMPPPPAXZZZZZZZZZPPPPPPPPPPPPPY
TNNNNEEESSSSSSSSSSSGGGGGGGGGGGLLLLZZZZZRZRRWWWRRUUUUUUZZZZQDDDDBBUIIIIIIIIPPPEEEEEEEEEEEXKKKKKXWWWWWWLLLLLLLLPLTTTPAAZZZZZZZZZZPPPPPPPPPPPPP
TTNNEEEEESSSSSSSSSSSGGGGGGGGGGGLLLRRZZZZZZRWRRRRUUUUUUUQZQQBBBDBBBIIIIIIIIIPPEEEEEEEEEEEECCKKKKGGWWWWLLLLLLLLLLTTTTAAAAZZZZZZZPPPPPPPPPPPPPP
TNNNEEEEESSSSSSSSSSSSGGGGGGGGGGGLRRRRZRRRRRRRRRRUUUUUUUQQQBBBBDBBIIBIIIIIIUEEEEEEEEEEEEYYKCCKKKKGWWWLLLLLLLLLEEVTAAAAAAZSSZZZZPPPPPPPPPPPPCP
TTNEEEEEESSSSSSSSJJJGGGGGGGGLGGLLRRRRZRRRRRRRRRRUUUUUUUUUQBBBBBBBBIBIIIIIIUUEEEEEEEEEEEEKKCKKKKKKKKKKLLLLLLLLLVVVAZZAAAVKKZPPPPPPPPPPPPPPPPP
ENNEEEEERSSSSSSSSSJGGGGGGGGGLGGGGURRRRRRRRRRRRRUUUUUUUUUUUBBBBBBBBBBIIIIIUUUUEEEEEEEEEEEKKKKKKKKKKKKKKKLLLLLLLVVZZZZZAAVKEPPPPPPPPPPPPPPPPPP
EEEEEEEERSSSSSSSJJJJGJGGJGLLLJJGGGRRRRRRRRRRRRRRRUUUUUUUUUBBBBBBBBBBBBIIUUUUUEEEEEEEEEYKKKKKKKKKKKKKKBBBLLLLVVVVEEZZZZAKKEPPPYPPPPPPPPPPPPPP
EEEEEEEESSSSSSSJJJJJJJJJJJJLJJGGGGGRRRRRRRRRRRRRUUUUUUUZZUBBBBBBBBBBBBIBBBUUUEEEEEEEEEYKKKKKKKKKKKKKKBKLLVVVVVVVEEEZEEAEXPPPXXXNPPPPPPPPPCPW
EEEEEEESSSISJJSJJJJJJJJJJJJJJJJGGGGGRRRRRRRRRRBUUUUUUUUZZZBBBBBBBBBBBBBBBBUCUUUEEEEDDDKKKKKKKQKKKKKKKKKVVVVVVVVVVEEEEEEEXXXXXXXXBPPPPPPPPPPW
EEEEEEEESEEJJJJJJJJJJJJJJJJJJJGGGGOGGGRRRRRRBBBBBUUUUUUUUUEBBBBBBBBBBBBBBBUCCCCEEEEEDDKKKQKQQQKKKKKKCCBVVVVVVVVVVEEEEEEEXXXXXAABBBBPMMPWWWWW
EEEEEEEESEEEJJJJJJJJJJJJJJJJJJGJGGGGGGRRRRRRBBBBBBBUUIIUEEEEBBBBBBBBBBBBFMUUCCCCCCCDDDDQCQKQUQQKKKKKCBBVVVVVVVVVVEEEEEWEXXXXXAAAAABMMMMMMWWW
EEEEEEEEEEEEJJJJJJJJJJDJDJJJJGGGGGGGGGGYYYYRBBBBBBBBBBBEEEEEEOOBBBBBBBBBMMMCCCCCCCCCDDDQCQQQQQTKKKKKKUBVVVVVVVVVEEEEEEEZXXXXXAAALMMMMMOMWWWW
EEEEEEEEEEJJJJDJDDDDDDDDDJJJJJAAGGGGYYYYYYYYYBBBBBBWWBEEEEEEEOOOOBBBRRRZZZZZZZZZZCCCCCDQCQQQQTTTKKKKKUBVVVVVVVVVEEEEEEEEUXXXXAAMMMMMMMMMMWWW
EEEEEEEEEEEJJJDJDDDDDDZDDDJJJAAAAGGGGYYYYYYYYBBBBBBBWBBEEEEOOOOOOORRRRRZZZZZZZZZZCCCDDDQQQQQQQQTTKKKKKBBBVVVVVVVEEEEEEEEUUXXXSSSSMMMNMZMWWWW
ESEESEEEEEEEEDDDDDDDDDDDDDJJAAAAAAAAYYYYYYYBBBBBBBBBBBBBBBEOOOOOORRRRRRZZZZZZZZZZCCCDDQQQQQQQQQTTKKKKBBBBBVVVVUEEEEEEEEEEXXXXXSMMMMNNNNMMWWW
ESSSSEEEEEEEEADDDDDDDDDDDJJJAAAAAAAYYYYYYYYBBBBBBBBBBBBBBBEEEOOORRRZZZZZZZZZZZZZZOCCDDQGIQQQQQQQTQQBBBBBBBVVVUUUEEEEEEEEEEXTXXSSSNNNNWWWWWWW
ESSSSSSSEEESDDDDDDDDDDDDJJJJAAAAAAAAYYYYYYYYBYBBBBBBBBBBBEEEOOOORRRZZZZZZZZZZZZZZKDDDGGGQQQQQQQQQQQBBBBBBBVUUUUUEEEEEEEEEEETXSSSNNLNNNNNNWWW
SSSSSSSSSSSSDDDHDDDDDDDDJAAAAAIAAAAAYYYYYYYYYYYBBBBBBBBEEEEEOOOORRRZZZZZZZZZZZZZZKDDGGGGQQQQQQBQQQBBBBBBNNBRUUUURRREEEEEEEETTNNNNNNNNNNNNTWW
SSSSSSSSSSSDDDDDDDDDDDDJAAAAAAAAAAAYYYYYYYYYYYBBBBBBBGGGEEEEOOOORRKZZZZZZZZZZZZZZGGGGGGGQQQQQQBBBBBBBBBBBBBRRRRRRRRREENNENNNNNNNNNNNNNNNNTWW
SSSSSSSSSSDDDDDDDDDDDDAAAAAAAAAAAAAYYYYYYYYYYBBBBBBBBGGGGEEEOOOOTRRZZZZZZZZZZZZZZKKGGGGFQQQRRQBBBBBBBBBRRRRRRRRRRRRREENNNNNNNNNNNNNNNNNNNTTT
SSSSSSSSSSDDDDDDDDDDDDAAAAAAAAAAAAAAYYYYYYYYYYBBBBBGBGGGGEEEEOTTTTRZZZZZZZZZZZZZZZKGGGGFQQRRRQBBBBBXBBXRRRRRRRRRRRRNNENNNNNNNNNNNNNNNNNTTTTT
SSSSSSSSSSDDDDDDDDDDDDAAAAAAAAAAAAAYYYYYYYYYYJBBBBBGGGGGGEEEETTTTTTZZZZZZZZZZZZZZZKKKKFFQBBBBBBBXXXXXXXXXRRRRRRRRRNNNENNNNNNNNNNNNNNNNNNTTTT
SSSHSHSSHSSDDDDHHHHDDDAAZAAAAAAAAYYYYYYYYYYYYNXBBBBGGGGGGGETTTTTTTTTEEVVZZZZZZZZZZKKKKFFBBBBBBBXXDXXXXXXXXXRRRRNNRNNNNNNNNNNNNNNNNNNNNTTTTTT
SSHHHHHHHSSDDHHHHHBHDHHAAAAAAAAAAYYYYYYYYYYYYNXNIBIIGGGGGGTTTTTTTTTTEVVVZZZZZZZZZZKKFFFBBBBBBBBXXXXXXXXXXXXRRRRNNNNNNNNNNNNTNNNNYNTTNNTTTTTT
SSSHHHHHHSSSDHHHHHHHHHHCCAAAAAACCYYYYYYYYYYNYNNNIIIIGGGYGGFTTTTTTTTVVVVVVVVKKKKKKKKKFBBBBBBBBBBBXXXXXXXXXUXRRRRRNNRRNNNNNNNTNNNNTNTNNNTTTTTT
SSSHHHHHHHHSHHHHHHHHHHHHCAAAAAACCYYYYYNYYYYNNNNPPPIGGGGGGGGTTTTTTVTVVVVVVVVKKVKKKKKKFFBBBBBBBJXBXXXXXXXXXXXRNNNRRNNRNNNNNNRTNNNNTNTNTNTTTTTT
SSHHHHHHHHHHHHHHHHHHHHHCCCCAACCCCCNWNNNNYYYNNNNNPPPPGGGIIITTTTTTVVVVVVVVVVVVVVKKKKKKKFBBBBBBBJXXXXXXXXXXXXXNNNNNRRRRNNNNNNRTTTTTTTTTTTTTTTTT
HHHHHHHHHHHHHHHHHVHHVVCCCCCCCCCCCCNNNNNNNNNNNNNNPPPPPPPIIIITITVVVVVVVVVVVVVVVVKKKKKKKBBBBBBBOBXXXXXXXXXXXXXNNNNNRNRRNNNNNRROOTTTTTTTTTTTTTTT
HHHHHHHHHHHHHHHHHVVVVVCCCCCCCCCCCCNKNNNNNNNNNPPPPPPPPPPIIIIIIIIVVVVVVVVVVVVVVKKKKKKKBBBBBBBBBBBXXXXXXXXXONNNNNNNNNRRNNNNNNROOTTTTTTTTTTTTTTT
HHHHHHHHHHHHHVVVVVVVFVVVCCCCCKKKCNNKNNNNNNNNNPPPPPPPPPPPPIPIIIIVVVVVVVVVVVVVKKKKKKKBBBBBBBBBBBBXXXXXXXXXXNNNNNNNNNNRRNNNNNNOOTTTTTTTTTTTTTTT
HHHHHHHHFFHFVVVVVVVVVVVCCCCCCKKKKNNNNNNNNNNNNNPPPPPPPPPPPPPIIIIVIVUVVVVVVVVVKKKKKKBBBBBBBBBBBBBBXXXXXXXXNNNNNNNNNNNNNBNOONNOOOTZZTTTTTTTTTTT
HHUHHHHHFFFFVVVVVVVVVVVVCCCCCKKKMNNNNNNNNNNNNNNPPPPPPPPPPPPIIIIIIIVVVVVVVVVVKKKKKKBBBBBBBBBBBBPBPPXXPPPXNNNNNNNNNNNOOOOOOOOOOOOOZZZZZTTTTTTT
HHHFFFHHFFFFVVVVVVVVVVVCCCCCCKKKKXNNNNNNNNNNNNNNPPPPPPPPPPIIIIIIIIIIVVIVVIIKKKKKKGGGBBBBBBBBBBPPPPXXXPNNNNNNNNNNNNNNOOOOOOOOOOZZZZZZZTTTTTTT
FFFFFFHHFFFFFFVVVVVVVVCCCCCKKKKKKKKNNNNNNNNNNNPPPPPPPPPPPPIIIIIIIIIIVIIIIIIIKKKKGGGGBBBBBBQBBBPPPPXXPPNNBBNNNNNNNNNNNNWOOOOOOOEEEZZZZTTTTTTT
FFFFFFFFFFFFFFFVVVVVVVCCCCKKKKKKKHKKKKWNNNNNNNPPPPPPIIIIIIIIIIIIIIIIIIIIIIIIKKKGGGGGBPPBHBQBBPPPPPPPPNNNBBNNNNNNNNNNNNOOOOOOOOOEEEZZZTTTTTTT
5 changes: 5 additions & 0 deletions solutions/solutions.cabal
Original file line number Diff line number Diff line change
@@ -1167,3 +1167,8 @@ executable sln_2024_11
import: day
main-is: 2024/11.hs
build-depends: containers

executable sln_2024_12
import: day
main-is: 2024/12.hs
build-depends: containers
55 changes: 55 additions & 0 deletions solutions/src/2024/12.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{-# Language BlockArguments, ImportQualifiedPost, MonadComprehensions #-}
{-|
Module : Main
Description : Day 12 solution
Copyright : (c) Eric Mertens, 2024
License : ISC
Maintainer : emertens@gmail.com
<https://adventofcode.com/2024/day/12>
-}
module Main (main) where

import Advent (getInputMap, countBy)
import Advent.Coord (Coord, cardinal, above, right, below, left)
import Advent.Search (dfs)
import Data.List (unfoldr)
import Data.Map (Map)
import Data.Map qualified as Map
import Data.Set (Set)
import Data.Set qualified as Set

-- | >>> :main
-- 1546338
-- 978590
main :: IO ()
main =
do input <- getInputMap 2024 12
let rs = regions input
print (sum (map (\x -> perimeter x * length x) rs))
print (sum (map (\x -> walls x * length x) rs))

-- | Return a list of regions in the input map.
regions :: Map Coord Char -> [Set Coord]
regions = unfoldr \input ->
[ (region, Map.withoutKeys input region)
| (start, label) <- Map.lookupMin input
, let region = Set.fromList (dfs step start)
step i = [j | j <- cardinal i, Map.lookup j input == Just label]
]


-- | Find the perimeter length of a region.
perimeter :: Set Coord -> Int
perimeter xs = length [() | x <- Set.toList xs, y <- cardinal x, y `Set.notMember` xs]

-- | Compute the number of walls needed to surround a region by looking for
-- the corners of the region.
walls :: Set Coord -> Int
walls xs =
let f i = Set.member i xs in
countBy (\x -> not (f (above x)) && (not (f (right x)) || f (above (right x)))) xs +
countBy (\x -> not (f (below x)) && (not (f (right x)) || f (below (right x)))) xs +
countBy (\x -> not (f (right x)) && (not (f (above x)) || f (above (right x)))) xs +
countBy (\x -> not (f (left x)) && (not (f (above x)) || f (above (left x)))) xs

0 comments on commit bd551f9

Please sign in to comment.