This commit is contained in:
Paul-Henri Froidmont 2024-12-15 02:06:16 +01:00
parent 065e0178ae
commit 5c0e8a2ce6
Signed by: phfroidmont
GPG key ID: BE948AFD7E7873BE
2 changed files with 230 additions and 0 deletions

140
input/day12 Normal file
View file

@ -0,0 +1,140 @@
NNNNNNNNNNNNNNNRRRRRLLLLLLLLRRBRRRRTTTTTTTTZZZZUUUZZZZZZZGGGGGGGGGGMMMMAAAAAAAAAAAAAAAAAAYYYYJJJXXXXXXXXXXXXXXXXXWWWWWWWJJJJJJJJJJJJJJJCCCCC
NINNNNNNNNNNNNNNRRLLLLLLLLRRRRRRRRRRTTTTTTZZZZZUUUZZZZZZGGGGGGGMGMMMMXXMMAAAAAAAAAAAAAAAAYYYYYJXXXXXXXXXXXXXXXHXWWWWWWWWJJJJJJJJJJJJJJJCCCCC
NNNNNNNNNNNNNNNRRRLLLLLLLRRRRRRRRRRRTTTTTTZZZZZUUUZZZZZZZGGZGMMMMMMMMMMMAAAACAAAAAAAAAAPPXJJJJJXXXXXXXXXXXXXXXXXWWWWWWWWWJJJJJJJJJJJJJCCCCCC
TNNNNNNNNNNNNNNNRLLLLLLLLLXRRRRRRRRRTTTTTLUZZZZUUUZZZZZZZZZZGGMMMMMMMJMMAAAACAAAAAAAAAXXXXXXJJJJXXXXXXXXXXXXXXXXAWAWWAWWJMMJJJJJJJJJJJCCCCCC
TNNNNNNNNNNNNNNNRRRLLLIIIIXXRRDRRRRTTTTTTLLZLZZUUUZZZZZZZZZQQQQQQQQMMMMMMCCCCAAAAAAAAALXXXXXJJJJXXXXXGXXXXXXXXAAAAAAAAJJJJJJJJJJJJJJJJJJCCCC
TTNTTNNNNNNNNNNNRRRLLTTTTIIIIRRRRRRRTTTTTLLLLLUUUUUUZZZZZZMQQQQQQQQMMMMMMCCCAAAAAAAAAAXXXXXXJJJJXXXXXXXXXXXXXAAAAAAAAAJJJJJJJJJJJJJJJJJJCCCC
TTTTTNNNNNNNNNNNNNTTTTTTTIIIIRRRRRTTTTTLLLLLLLUUUUUUZZZZZMMQQQQQQQQMMMMMMMACCAAAAAAAAAJXXJJJJJGGCXGGXXXXXXXXAAAAAAAAAAJJJJJJJJJJJJJJJJJJCCCC
TTTTTNNNNNNNNNNNNNKTTTTTTITITTTTTTTTTTTLLLLLLLUUUUUUUUUUUMMQQQQQQQQMMMMWAAAAAAAAAAAAAAJXJJJRRRRGGGGGGIXXIIXXAAAAAAAAAAJJJJJJJJJJJJJTTGGTCCCC
TTTTTTTNNFFNNFNNNDKKKTTTTTTTTTTTTTTTTTLLLLLLLLUUUUUUUUUUUMMQQQQQQQQQQQQQQAAAAAAAAAFFAFFFFJJRRRRGGGIIIIIIIIDDAAAAAAAAAAAAJJJJJJKKJJJJTTGTTTTT
TTTCTTTNFFFFFFNNOKKKKKKTTTTTTTTTEEETTTLLLLLLLLUUUUUQQQQQQQQQQQQQQQQQQQQQQAAAAAAAAAFFFFFFFFRRRRRGGRRIIIIIIIIIAAAAAAAAAAAJJJJJJKKKKKTTTTTTYTSS
CCTCCCCNCFFFFFFNOOKKKKKKKKKTTTTTEEETNNUULLLLLLUUUUUQQQQQQQQQQQQQQQQQQQQQQAAAABAAAAFFFFFFFTJJRRRRRRIMIIIIIIIYAAAAOOAAAAJJJJJJKKKKKTTTTTTTTTTT
CCTCCCCCCFFFFFFNOKKKKKKKKKTTTKTTEEENNNNLLLLLLLUUUUUQQQQQQQQQQQQQQQQQQQQQQAAAFAAAFFFFFFFFFTTTTTRRRRIIIIIIIIIIQOAAOOAJJJJJJJJJJKKYYYYTTTTTTTTT
CCCCCCCCCRFFFRRKOKKKKKKKKKKTKKTEEEEDNNNNLLLLLLLLUUUQQQQQQQQQQQQQQQQQQQQQQAAAAFAFFFFFFFFFTTTTTRRRRRRIIIIIIIIIQOOOOOOJJJJJJJJJJJKKYYYYTTTTTTTT
CCCCCCCCRRRRFRQKKKKKKKKKKKKKKKTEETENNNNNLLLLLLBBUUUQQQQQQQQQQQPQQQQQQQQQQFFFFFFFFFFFFFFFTTTTTTTTRRRIIIIIIIFQQOOOOOOJJJJJJJJJJKKKKYTTTTTTTTTT
CACCCCCCRRRRRRQKKKKKKKKKKKKKKKTEETDVVVVVVNLELLBBUUUQQQQQQQQQQQPQQQQQQQQQQFFFFFYYYFFFFFFTTTTTTTTTRRRRIIIIIFFQQOKOOOOJJJJJJJJJJKKKKTTTTTTTTTTT
AACCCCJRRRRRRRRKKKKKKKKKKKKKJKTTTTDVVVVVVNNELNBBUUUQQQQQQQQQQQPQQQQQQQQQQFYYYFYYFFYFFFFTTTTTTTTTTTRRRRIIIFFFFFFFJJJJJJJJJJJJKKKKKTTTTTTTTTTT
ACCCCURRRRRRRRRKKKKKKKKKKKKTTTTTTTNVVVVVVNNEENBBUUUIIQQQQQQQQQPQQQQQQQQQQYYYYYYYFFYYFFFTUTTTTTRTRRRRRRRIKFFWFGGGJJJJJJJJJJJKKKKKKTTTTTTTTTTT
ACCCCCRRRRRRRRRRKKKKKKKKKKOTTTTTTTTVVVVVVNNNNNNNNIIIBQQQQQQQQQPQQQQQQQQQQPYYYYYYYYYYYFFVTTTTTTRRRRWWWWKKKKFFFGFJJJJJJJJJJJJKKKKKKKKTTTTTTTTT
ACCCOORRRRRRRRRRRKKKKKKKKKOTTTTTTTTVVVVVVNNNNNNNNIIIIQQQQQQQQQPPPPPPPFFFFYYYYYYYYYYYBFFVTTTTRRRRWWWWKKKFFFFFFFFFJJJJJJJJJJKKKKKKKKKKTTTTTTTT
AAARRRRRRRRRRRRKKKKKKOOOOOOOOOYYTTMVVVVVVNNNNNNNNIIIIQQQQQQQQQPPPPPPPFFFYYYYYYYYYYYYYFFVVTRTRRRRWWWWFFFFFFFFFFFFJVJUJUUJJJJKKKKKKKKTTTTTTTTT
AAAARRRRRRRRRRRRRKKKKKOOOOOOOOYYVVVVVVVVVNNNNNNIIIIIIIIIBPPPPPPPPPPPPPPFYYYYYYYYYYYYYYFVVRRRRRRRRWFWWFFFFFFFFFFFFFUUBUUJJJJJKKKKKKKKKTTTTTTT
JJJRRRRRRRRRRRRRRKKKKOOOOOOOOOYOVVVVVVVNNNNNNNNNIMIIIIIIIPPPPPPPPPPPPPPFPYYYYYYYYYYYYYYVVNNNNRRRRWWWWWFFFUFFFFFFFFUUUUUJJJJJKKKKKKKKKTTTTTCT
JJJJJRRRRRRRRRRRKKKOOFOOOOOOOOYOVVVVVVVNNNNNNNNNRMIIIIIIOPPPPOOBOPPPPPPPPYYYYYYYYYYYYYYVVVNNRRRRWWWWWWFFFUUFFFFFFUUUUUULJJJJKKKKKKKKKZFCCTCT
JJJJJRRRRRRJRPPPKKKKOOOOOOOOOOOOVVVVVVVNNNNNNNNRRMIIIIOOOOOOOOOOOPPPPPPPYYYYYYYYYYYYYYVVVNYYYWWWWWWWWWWWWFFFRRFFIIIUUUULLJJJYYKKKKKKKKFFCCCC
JJJJJJRRRJRJJJPPKKKKKOOOOOOOOOOOOOLLLNNNNNNNZNNRBMIIIOOOOOOOOOOOPPPPPPPPYYYYYYYYYYYYYYVNNNYYYWWWWWWWWWWWWFFFFRFOQIIIUUUUUYYJYYYKKKKKKKFFFCCC
JJJJJJJJRJJJJJPPKKKPPPOOOOOOOOOLOOLLLNNNNNNNRNNRRMMMIOOOOOOOOOOPPPPPPPPPYYYYYNNNYYNNYYNNNNYYYWWWWWWWWWWWWFFFRRRQQQIIUUYYYYYYYYYKKSSSSFFFVFCC
JJJJJJJJJJJJJJTTTTTTOOOOOOOOOOOLLLLNNNNNNNRRRRRRRMMIIMMOOOOOOOOOPPPPPLPPYRYYYNNNNNNFYYNNNNYYYYYYYYYYYYYYYYYYFFFQQQQQYUYYYYYYYYYSSSSSFFDFFFFF
JJJJJJJJJJJJJHTTTTTTPPOOOOOOOOLLLLLNNNNNNNNRRRRMMMMMIMMMMOOOOOOPPLLLLLLLLJYYWPPDDNNNNNNNNNYYYYYYYYYYYYYYYYYYWFFFQQQQYYYYYYYYYYSSSSFFFFFFFFFO
JJJJJJJJJJJJJJTTTTTTTPPOOOOOLLLLLLLNNNNNNNNNNRRMMMMMMMMMTOOOOOTTLLLLLLLLLJJKPPDNNNNNNNNNNNYYYYYYYYYYYYYYYYYYWFFFFQQYYYYYYYYYYSSSFFFFFFFFFFFO
JJJJJJJJJJJJJJTTTTTTTPPTTTTOLSLSLNNNNNNNZNZZMMOMMMMMMTTMTOOOOOOTTLLLLLLLLJJJPPNNNNNNNNNNNNYYYYYWWWYYYYYYYYYYFFFQQQYYYYYYYYYSSSSSRFFFFFFFFFFF
JJJJJJJJJBJJBBTTTTTTTPPTTTTSLSSSLLNNNNNNZZZMMMMMMMMMMMTTTOOOOTTTTTTLLLLLLJJPPPNNNNNNNNNNNNYYYYYXWXYYYYYYYYYYQFFFQQYYYYYYYYYSYSSSRFFFFFFFFFFF
JJJJJJJJBBBBBBTTTTTTTPPTTTTSSSSSSSJNNNNNZZZMMMMMMMMMMMTTTOTTOTTTTTTTLLLMMJJPPPPNNNNNNNNNNNYYYYYXXXYYYYYYYYYYQXFAAYYYYYYYYYYYYSSSFFFFFFFFFFFB
JJJJJZJBBBBBBBTTTTTTTTTTTTTSSSSJJJJJJNZZZZZZZMMMMMMMMMTTTTTTTTTTTTTNLLPPPPPPPPPNMMNNNNNNNNYYYYYXXXYYYYYYYYYYXXXXAAYYYYYYYYYYYSSSFFFFFFFFFFFB
XJJJBBBBBBBBBBBBPPTTTTTTSSSSSSSJJJJJJJMMZZZZZZMUMMTMMTTTTTTTTTTTTNNNLLLLPPPPPPPPPPRNNNNNNNYYYYYNXXXXXXXXXXXXXXXXXAYYYYYYYYYYYJJJJJFFFDDDDDBB
XJJBBBBBBBBBBBBPPPTTTTTTSSSSSSSSSJJJMMMMZZZZZZMMMMTTTTTTTTTTNNNTTTNNLLLLLPPPBBPRRRRNRNNRRRYYYYYNNXXXXXXXXXXXXXXXAAAYYYYYYYYYYJJJJJNFFFDDDDBB
XXXXXBBBBBBBBBBBPPTTTTTTSSJJJSJJJJJMMMMMZZZZZZZZMDDDDTTTTTTTNNNNTNNNNLLLLLPPPBPNNRRNRRRRRZYYYYYXXXXXXXXXXXXXXXAAAAYYYYYYYYYYYJJJNNNFFFDDDDHD
XQQXXBBBBBBBBBBBPPTTTTTTJJJJJJJIIJIIMMMZZZZZZZZDMDDDDTTTTTTTNNNBNNNNNLLLLLLBBBBNNNRRRRRRRZYYYYYYYYYYYYXXXXXXXXAAAAAYYYYYYJJJJJJNNNNNWWDDDDDD
QQQQQBBBXXBBBBBBBRTTTTTTJJJJJJJIIIIIIMZZIZZZZZDDDDDDDDTTTTNNNNNNNNNNNNLLLLLLBBNNNNRZZZZRZZYYYYYYYYYYYYXXXXXXXAAAAOAAAYYYYYJJJJNNNNNNNWDDDDDU
QQQQQGJBXBBMBBBBRRTTTTTTBJJJJJJIIIIIIIIIIIZZZZDDDDDDDTTTTNNNNNNNNNNNNNLLLLLENNNNNNNZZZZZZZYYYYYYYYYYYYXXXXXXXAOOOOAAAAAYYHNNNJNNNNNNNWDNDUUU
QQQQQQJJJJQJJBRRRRTTTTTTBBBJJIIIIIIIIIIIIIIZZZDDDDDDDDDTTTNNNNNNNNNNNNLLLLLEEEEEENNZZZZZZZZYYYYYYYYYYYXCCCXXXXOOOOAAAAAANNNNNNNNNNNNNNNNSSUU
FQQQQQQJJJQQJFFFRRTTTTTTBBBBBBIIIIIIIIIIIIIZZZDDDDDDDDTTTXNNNNNNNNNNNNLEEEEEEEEEEZZZZZZZZZZYYYYYYYYYYYCCOOOOOOOOAAAAAAAANNNNNNNNNNNNNNNSSSNN
FQQQQQYJJJJJJFFFRRRRRRRZBBBUUBWIIIIIIIIIIZZZZZDDDDDDDDTTTXNNNNNNNNNNNNNEEEEEEEEEEZBZZZZZZZZYYYYYYYYYYYCCOOOOOOOOOAAAAAAAANNNNNNNNNNNNNNXXXNN
FFFJZQJJJJJJJFFRRRXXRRXBBBBBBBBIIIIIIIIIIZZZZZCCCDDDDDTTTXXXXNNNNNNANNEEEEEEEEEEEZZZZZZZZZZYYYYYYYYYYYCCCCOOOOOOOOAAAAAANNNNNNNNNNNNNNNNNNNN
FFFJJJJJJJJJJJFRXXXXXXXBBBBBBBIIIIIIIIIIIZZZZZCCCDDDDDXXXXXXXXNNNNAANAEEEEEEEEEEEEZMZZZZZZZYYYYYYYYYYYCCCCCOOOOOOOAAAAAAANNNQQQQNNNNNNNNNNNN
FFJJJJJJJJJJJJJGGXXXXXXBBBBBBBBIIIIIIZVVZZZZZCCCDDDDDDXXXXXXXXBBNNAANAEEEEEEEEEEEEEMMZZZZZZYYYYYYYYYYYCCCCCOOOOOOOAAAAALAAAAAQQQQNNNNNNNNNNN
FFJJJJJJJJJJJJGGGGXXXXXXQBYYBYIIIIIWZZVVZZZZZCDDDDDDDDXXXXXXXXAAAAAAAAAAEEEEEENNEEEMMMMZZZZYYYYYYYCCCCCCCCOOTTOOOOAAAAALLAAQQQQQQQQWNCNNNNNN
FFFJJJJJJJJJJBGGGGGXXXXXQQYYYYIIIIIZZZZZZZZZZWWWDDWWWWXXXXXAAAAAAAAAAAAEEEEEEENNNEMMMMMMMZZYYYYYYYCCCCCCCOOTTTOAAAAAAALLLAAAQQQQQQQWWNNNNNNN
XXXXXXJJJJJJJBBGGGGXXXXXQQYYYYIIIIIZZZZZZZZZWWWWDWWWWWWXXXXAAAAAAAAAAAAAAEEENENNNNMMMMMMMZZZEEREECCCCCCCCCTTTTAAAAAAAAALLQQQQQQQQQANNNNNNNNN
XXXXXJJJXJJJJBBBBGGGGXXQQYYYYYYYICCZZZZZZZZZWWWWWWWWWWWWWXXXAAAAAAAABAAAMNEENNNNNNMMMMMMMMIILEEEECCCCCCCCCTTTTAAAAAAAALLLHQQQQQQQQANLNNNNNNN
XXXXXXXXXXXXXBBBBGGGYHHYYYYYYYYYYKKKZZZZZZZZWWWWWWWWWWWWWWMXAHHHHAAAAAAANNEENNNNNNNMMMMMMMMILLEECCCCCRCCCCTTTTTTAAAAALLLLHHQQQQQQQAANNNNNNNN
YXXXXXXXXXXXCCBBBBBBYHYYYYYYYYYYYKKFFFZZZZZZZWWWWWWWWWWWWWMMMHHHHAALAAAANNENNNNNNNNNMMMMMMMLLEEEEEECCCCTTTTTTTTTTTAAALLLLLQQQQQQAQAAAANNNNNI
XXXXXXBNNNBBBBBBBABYYYYYYYYYYYYYYKKKFFZZZZZWWWWWWWWWWWWWWWMMMHHHHALLLLNNNNNNNNNNNNNNMMMMMMMMLLESESECKKTTTTTTTTTTTTAAALLLLLNQQQQQAAAAANNNAYYI
XXXXXBBBBBBBBBBBBBBYYYYYYYYYYYKKKKKKKKZKZZZZWWWWWWWWWWWWWWMMHHHHHHHLLLNNNNNNNNNNNNNNMMMMMLLLLSSSSSSETTTTTTTTTTTTTTTAALLLNNNQQQQQAAAAAAANNNYY
XXXXXXBBBBBBBBBBBBBYYNYYYYYYYKKKKKKKKKKKZZZZWWWWWWWWWWWWCMMHHHHHHHHHLLNNNNNNNNNNNNMNMMMMMLLLSSSSSSSSTTTTTTTTTTTTTTTTALLLNNNQQQIAAAAAAYANYYYY
QQXXQBBBBBBBBBBBBBIYYNYYYYYYYKYYKKKKKKKKKZZWWWJWWWWWCCCCCMMHHHHHHHUHLNNNNNNNNNNNNNMMMMLLLLLLSASSSSSSSTTTOOOOOOOOOOTAALLLLNNNNIIAAAAAYYYYYYYY
QQQQQBBBBBBBBBBBBBBBBNYYYYYYYYYKKKKKKBBBBBBBBBWWWWWWCCTCCCCHHHHHHHHHHSNNNNNBNNNNDNNNMLLLLLLLSSSSSSSSSSTTOOOOOOOOOOAAAAAANNNNNIIIAAAAAYYYYYYY
QQQQQQBBBBBBBBBBBBBBBBYYPYYYYYVVVVVKKBBBBBBBBBWWWWWZCCCCCCCHHHHHHHHHHSSNNNNBNNNDDDNNLLLLLLLLSSSSSSSSSSTTOOOOOOOOOOOAAAAAANINNIIAAAAAIIYYYYYY
LQLQQQBBBBBBBBBBBBBBBBDDPYYYYYVVVVKKKBBBBBBBBBZZZZZCCCCCCCHHHWHHHHHHSSSNNNNNNNNNDLLLLLLLLLLLSSSSSSSSSSTTOOOOOOOOOOOAAAAAANIIIIIIAAAIIIYYYYYY
LLLLQQBBBBBBBBBBBBBBPPPPPPYYYYVVVVVVVBBBBBBBBBZZZZZZZCCCCCCCCHHHHHHHSXSSSNSSNNNDDLLLLLLLLLLLLSSSSSSSSSTTOOOOOOOOOOOAAWANNNNNNIIIAIIIIIIYYYYY
LLLQQQQQBBBBBBBBBBBBPPPPPPYYYYYYUUVVVBBBBBBBBBZZZZZCCCCCCCCCCCHHHHHAXXSSSNSSSSSDDDLLLLLLLLLLLSSSSSSSSSSTOOOOOOOOOOWWWWWLLNIINIIIIIIIIIIYYYYY
LLLLLQQQBBBBBBBBBBBOPPPPPPPPMMMUUVVVVBBBBBBBBBZZZZZCCCCCCCCCCCCHHAAAAXSSSSSSSSSSSLLLLLLLLLLLIIISSSSSSSSSOOOOOOOOOOYWWWLLNNIIIIIIIIIIIIIYYYYY
LLEEEQQQBQQBBBBBBBBOOPPPPPPPPMMUUUVVVBBBBBBBBBZZZZZZZCCCCCCCCCCAAAAAXXXSXXSSSSSSSLLLLLLLLLLIISSSRRRRRRRRRROOOOOOOOWWWLLLLIIIIIIIIIIIIRIIIIYY
LDEEEQQQQQQJBBBBBJBPPPPPPPPPUUUUUUUUVBBBBBBBBBZZZZZZZCCCCCCCCCCCAAAAXXXXXXSSSSSSSLLLLLLLLIIIIISSRRRRRRRRRROOOOOOOOWLLLLLLPIIIIIIIIIIIIIIYYYY
LDDDQQQQQQQJBBBBJJJOPMPPPPPPPPUUUUUVVBBBBBBBBBZZZZZZZCCCCCCCCCCCAAAXXXXXXXXSSSSSSLLLLLLLLIIIIIISRRRRRRRRRROOOOOOOOWLLLLLLIIIIIIIIIIIIIIIYYYY
LDDDQQQQQJJJZZJJJJJOOPPPPPPPUUUUUUUVVVVVVZZZZZZZZZZZZZCCCCCCCCCCAAAAXXXXXXXSSSSSRLLLLLLLLLIIIIIIRRRRRRRRRREOOOOOOZWLLLLLLLLIIIIIIIIIIMIIYYYY
DDDDDQQQQJJJJZJJJJOOPPPPPPPPPUUUUUVVVVVVVZZZNNZZZZZZZZCCCCCCCCCCCAAAXAAXAAXSSSSSSLLLLLLLLLLIISSISSRRRRRRSSEOOOOOOZZLLLLLLLLIYYIIIIIIIMJJYYYY
DDDDDDJJJJJJJJJJJOOOOPPPPPPPPUUUUUUVVVVVVZZZNZZZZZZZZCCCCCCCCCCCCCAAAAAAAAAAASSLLLLLLLLLLLIIISSSSSRRRRRRSSZOOOOOOZZZLLLLLLLYYLIIIIJSSJJJYYYY
DDDDDDDJJJJJJJJJJOOOOPPRPPPPPUUVJUUVVVVVVNNNNNNZZZZZWECCCCCCCCCCCAAAAAOAAAAAALLLLLLLLLLLLLIIISSSSSRRRRRRFPPOOOOOOZZZLLLLLLLLLLJJJJJJJJJJJYYY
DDDDDDDJJJJJJJJJJJJOOOOPPUUPUUVVJVUVVVVVNNNNNNZZZZWWWWWWWWCWCCCCAAAAAAOAAAOALLLLLLLLLBBLLLLIIISSSSRRRRRRPPPZZZZZZZZZZLLLLLLLHJJJJJJJJJJYYYYY
DDDDDDDDDJJJJJJJOOOOOOOOOUUUUUVVVVUVVVVVVNNNNNNZZZWWWWWWWWWWWWCCAAAAAAOOOOOALLLLLLLLLBLLLLLIPISSSSRRRRRRRRRRRRZZZZZLLLLLLLLLHJJJJJJJJJJJYYYY
DDDDDDDDDJJJIOJOOOOOOOOOOOUCCVVVVVVVVVVVVVNZNNZZZWWWWWWWWWWWWWWIAAAAAAOOOOOAAOLLLELLLLLLLJLIPPSSSSSSRRRRRRRRRRPZZZZLLLLLLLLHHHJJJJJJJJJJJYYY
DDDDDDDDDDJJJOOOOOOOOOOOCCCCCCCVVVVVVVVVZZZZZZZZZZZWWWWWWWWWWIIIIAAAAOOOOOOOOOLLLLLLLLPPPPPIIPEESSSSRRRRRRRRRRPPPZZLLLLLLLHHHHJJJJJJJJJJYYYY
DDDDDDDDDDDDJOOOOOOOOOOOOCCCCCVVVVVVVVVVZZZZZZZZZZZWWWWWWWWWWWDDHDAAAOOOOOOOOOOOOLLLLPPPPPIIIPESSPSSRRRRRRRRRRMPPPMMLLLLLLHHHTJJJJJJJJJJJYYY
DDDDDDDDDDDNNNOOOOOOOOOOOCCCCVVVVVVVVVVZZZZZZZZZZZZZZWWWWWWWWWDDDDAAOOOOOOOOOOOOLLLLPPPPPIIIPPPPPPPPRRRRRRRRRRRRRMMLLLLLLLHHHHJJJJJJJJJJYYYY
DDDDDDDDDDDNNNOOUOOOOOOOOVCCVVVVVVVVVVVVZZZZGGZZZZZZZWWWWWWWWWWDDDDOOOYOOOOOOOOOLLLLLPPPPPPPPPPPPPPPRRRRRPMRRRRRRMLLLLLLLHHHHHJJJVVJJKJKKKYY
DDDDDDDDDDDUUNOOOOOOOOOOYVVCCVVVVVVVVVVVZLLLGGGGGGZGWWWWWWWWWWWDDDDOOOOOOOOOOOOOLYYYYPPPPPPPOPPPPNNNRRRRRPPRRRRRRMMLLLLLHHHHHHJVVVVVKKKKKKYK
DDDDDDDDDDDUUUOTTOOOOOYYYYVVVVVWWWWWCWVVVLLLLGGGGGGGWWWWWWWWWDDDDDDOVVOOOOOOOOZYYYYYYAAAPPAPPPPPNZNNRRRRRPMRRRRRRMMLLRRHHHHHVVVVVVVVVKKKKKKK
DDDDDDDZDDDUUOOOOPKHHHHYYYVVVVVVVWWWWWLLLLLLGGGGGGGGWWWWWWWDDDDDDDDVVVVVOOOOOOYYYYYYYYYAPPAANNNPNNNNRRRRRPMRRRRRRMMRLRRRRHHVVVVVVVIMKKKKKKKK
DDDDDDDZZDDXGOCCCKKKHKYYVVVTTTVVVWWWWWLWLLLLGGGGSGGGGGGWWDDDDDDDDDDDVVVVOOOOOOYYYYYYYYAAPAAANNNNNNNNNNNNPPPRRRRRRMMRRRRRRRRVVVMVVMMMMMKMKKKK
DDDDDUDXXXXXXXXCXKKKKKYYQQTTTTVVVWWWWWWWLLLGGGGGGGGGGGGGDDDDDDDDDDDDVVVVVOOOOYYYYYYYYYAAAANNNNNNNNNNNNNPPPPRRRRRRRRRRRRRRRVVVMMVMMMMMMMMMKKK
DTTTDUUXXXXXXXXXXKKTKKKTTTTTTTTTVTWTWWWWLLGGGGGGGGGGGGGGDDDDDDDDMMMDDVVVVVVVOYYYYYYYYYAAAANNNNNNNNNNNNNPPPWCCCCCRRRQRRRRRVVVVMMMMNMMMMMDMKKK
HHTXQXXXXXXXXXXXXKTTTTTTTTTTTTTTTTTTWWWWWWGGGGGGGGGGGGGGGDDDDDDDMMMMMVVVVVVVOYYYYYYYYYAAAANNNNNNNNNNNNNNPWWWWCCRRRRRRRRRRVVMMMMMMMMMMMMMMKKK
HHTXXXXXXXXXXXXXXEEETTTTTTTTTTTTTTTTWWWWWWDGGGGGGGGGGGGGGDDDDDDMMMMMMVVVVVVVVVYYYYYSYYYAINNNNNNNNNNNNNCPPPCWWCCCCCRRSRRRRVVMMMMMMMMMMMMKKKKK
HHHXXXXXXXXXXXXEEEEETTTTTTTTTTTTTTWWWWWWWWDGGGGGGGGGGGGGGGDDDDMMMMMMMVVVVVVVYYYYYYYIAIIIINNNNNNNNNNNNCCCPCCCCCCCCCCRRRRRRRMMRMMMMMMMMMMMMMKK
HHHKXXXXXXXXXXXEEEEETTTTTTTTTTTTTWWWWWWWDDDDGGGGGGGGGGGGGDDDDDMMMMMCMVVVVVVYYYYYYYYIIIIIINNNNNNNNNNNNNNCCCCCCCCCCCRRRRRRRRRRRMMMMMMMMMMMMKKK
HKKKSXXXXXXXXXXEEEEEETTTTTTTTTTTPPPWWPPFDDDDGGGGGGGGGGZZZDDDDDBBMMMMVVPVPVPYAAYYYYYYYIIIIINNNPNNNOOONNNCCCCCCCCCCRRRRRRRRIIRRMMMMMMMMMMMKKKK
KKKKSSSSXXXXXXXXEEEETTTTTTTTTTTTNNPPPPPFFDDGGGGGGGGZZZZZZDDDDDBBBMMMMVPPPPPAAAYIYYYIIIIIIIIIIPNNNOOOOTTTCFCFFCCCCCCCCRIIIMIRIMUMMMMMMMMMKKKK
KKSKSSSSXXXXXXXXXEEEETTTTTTTTTNNNNPNFFFFFDDGGGGGGGGZZZZZZZZDDDBBBBBBMVBIIPPPPAIIIIIIIIIIIIIIIIOOOOOTTTTSTFFFCCCCCVVIIIIIIIIIIMMMMMMMMMMMKKKK
SKSKSSSSSXXXXDXXDDDDDHTTHTTTTNNNNNNNBFFFFFDFBGSGGGFZZZZZZZDDDDBBBBBBYBBBPPPPPIIIIIIIIIIIIIIIIIOOOOTTTTTTTTFFFCCCCVVIIIIIIIIIIIMMMMMMMMMMMMKK
SSSSSSSSUUSSXDDDDDDDDHHHHTTTNNNNNNNNBFFGFFFFBGGGGKGGZZZZDDDDDDBBBBBBBBBPPPPPIIIIIIIIIIIIIIIIIIOOOTBBBBBBBBBFFFFFCFVVXJAIIIIIIIIMMMMMMMKKKKKK
SSSSSSSSSSSSHHDDDDDDDDHHHHTNNNNNNNNNNFFFFFFBBGGGGGGGGZZMDDDDDDBBBBBBBBPPPPPPPIBIIIIIIIYIIIIIIIIITTBBBBBBBBBBBFFFFFVVXJAAJJJJIIIIMMMMMMKKKKKK
SSSSSSSSSSSSHHHDDDRDDHHHHHNNNNNNNNNNNNFFPFFGBBGGGGGGGZLMMDDDDDBBBBBBBBIIMMPPPIBIIIIIYYYIIIIIIIIITTBBBBBBBBBBBFFFFFVVVJAJJJJJIIIIMMMMKKKKKKKK
SSSSSSSSSSSSHHHDDHHHHHHHHHNNNNNNNNQNNOFXGGGGGGGGGGGGGLLLDDDDDDGBBBBBBBIIMMMMPPMMIIIIYYIIIIIIILLLLLBBBBBBBBBBBFFFFFFVVJJJJJJJJIIIMMCMQKKKKJKK
SSSSSSSSSSSSSHHHHHHHHHHHHHHNNNNNNNNNOOFFGGGGGGGGGGGLLLLLOODDDDBBBBBBBBMMMMMMMMMMIIIIYYYYIIIIILLLCCBBBBBBBBBBBFFFFFFFJJJJJJJJJJJJJCCMQQKKJJKK
SSSSSSSSSSSSSHHHHHHHHHHHHHHNNNNNNNNNOOOOGGGGGGGGGGGULLLLLLODDDBBBBBBBBMMMMMMMMMMIIIIIYYIIIIILLLLLLBBBBBBBBBBBFFFFFFJJJJJJJJJJJJJJCCCCQQQJJKK
SSSSSSSSOOOOOHHHHHHHHHHHHJHNNNNNNNNNOOOOGGGGGGGGGGGUUUELLLLDFBBBBBBBBBMMMMMMMMMMMIIIEBYIIILLLLLLLCBBBBBBBBBFFFFFFOOUJJJJJJJJJJJJJCCCCQJJJKKK
SSSSSSSSOOOOOHHHHHHJHHHHHJJJJNNNNNVVOOOOGGGGGGGGGGGDUUELLXXDBBBBBBBBBBMMMMMMMMMMMIMIEBIIIILLLLLLLCBBBBBBBBBFFFFFFOOUOOJJJJJJJJJJJJJJJJJJJJKK
SSSSSSSSOOOOOHHHHHHJHHHHHJJJJNNNNAVVVOOOOGGGGGGGGGGUUUUUUXXDTBBBBBBBBBMMMMMMMMMMMMMIEEEIIIELLLLLLCCFFFFFFFFFFFFFFOOOOOJJJJJJJJTJXXXJJJJJJJJK
SSSPSPPPAAOOOHHHHHHJHHHHCJJJJNNJAAVVVVVOOOGGGGGGGGGUUUUUUXXUTTTTTBBBBBMMMMMMMMMMMMEEEEEIITELLLLCCCCCFFFFFFFFFFFFOOOOOOJJJJJJJJJJXDDDJDDDDXJK
SSPPPPPPAOOOOOHHHHHTHHCCCJJJJJJJJAVVVVVVGGGGGGGGGGGUUUUUUUUUTTTTBBBBBMMMMMMMMMMMMEEEEEEEEEELLLLCCCCCFFCFFFFFFFFFFOOOOOJJJJJJJJXXXDDDDDDDDDDD
PPPPPPPPPPOOBOHHHHHTMTCJJJJJJJJJJVVVVVVVGGGGGGGGGGGUUUUUUUUUTTTTTBBTTTMMMMMMMMMMEEEEZZZZZZZLZZZZZZZCFCCFFFFFOFOOOOOOOOOJJJJJYXXXDDDDDDDDDDDD
PPPPPPPPPPOOOOHTTTTTTTTEJJJJJJJJJVVVVVVVGGGGGGGGGGGUUUUUUUUUTTTTTTTTTTMTMMMMMMMMEEEEZZZZZZZEZZZZZZZCCCCCCFFFOOOOOOOOOOOOOYYYYXXXXDDDDDDDDDWD
PPPPPPPPPPUOHHHHHTTTTTTJJJJJJJJJVVVVVVVVVVGZZFFGGFGUUUUUUUUUUTTTTTTTTTTTTTMMMMEEEEEEZZZZZZZZZZZZZZZCCCCCCCFOOOOOOOOOOOOOYYYYYYXXDDDDDDDDDDDD
PPPPPPPPPPPHHTTTTTTTTJJJJJJJJJJJJJJVVVVVVVGGFFFFFFFUUUUUUUUUUTTTTTTTTTTTTTTTMMMEEZZLZZZZZZZZZZZZZZZCCCCCCCCOAAOOOOOOOOFYYYYYYYYYDDDDDDDDDDDD
PPPPPPPPPPZRRTTRTTTTTTTJJJJJJJJJJJJVJVVVVVVGFFFFFFFUUUUUKUUUUUTTTTTZTTTTTTTTZZZZZZZZZZZZZZZZZZZZDDDDDCCCCCCCCAOOOOOOBYYYYYYYYYYYYDDDDDDDDDDI
PPPPPPPPPPZRRFFRTTTTTTTTTJJJJJJJJJJJJJJVVFFFFFFFFFFYUUFYYYUUUTTTTTZZZZTTTTZZZZZZZZZZLLLLLLLLLZZZDDDDDCCCCCCCAAAAAOOOZZZZZZZZZYYYDDDDDDDDDIII
PPPPPPPPPPRRRRRRRTTTTTTTTJJJJJJJJJJJFFFDFFFFFFFFFFFYUFFFYYYYYYTTTTZZTZTTTTTZZZZZZZZZRLLLLLLLLZZZDDDDDZZZZZZCAAAAAOOOZZZZZZZZZYYYDDDDDDLDDDII
PYPPPPPPPRRRRRRRRRTTTTTTJJJJJJJJJJJFFFFFFFFFFFFFFFYYFFFYYYYYYYTTZZZZTTTTTTTZZZZZFZZPRRLLLLLLLZZZDDDDDZZZZZZAAAAAZZZZZZZZZZZZZZZZDDDHHHKKKIII
LPPRPPPRPRRRRRRRRRTTTXTTJJJJJJJJJJJFFFFFDFFFFFFYYFYYYFYYYYYYYYYZZZZZZTTTTTTTTZAZZARRRRRLLLLLLZZZDDDDDZZZZZZAAAAAZZZZZZZZZZZZZZZZYYDFFFFKKIII
LLLRRRRRPRRRRRRTTTTTTXTTWJJJJJJVVJJFDDFFFFQQFFFYYYYYYYYYYYYYYYZZZZZZZTTTTTTTTZAZZRRRRRRLRRLRLLLLDDDDDZZZZZZAAAAAZZZZZZZZZZZZZZZZHHFFKKKKKIII
LLLRRRRRRRRRRRRKTXTTXXTTTDJJJJJJDDDDDDFFFFQQQQFRYYYYYYYYYYYYYYZZZZZZZZZZZTTTTZCCRRRRRRRRRRRRRZZZZZZZZZZZZZZZZZAAZZZZZZZZZZZZYYYYHFFFFKKKKIII
LRRRRRRRRRRRRRXXXXXXXXTTTDJDDJJJDDDDDDFYYQQQQYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZCCRRRRRRRRRRRRRZZZWWWWWWWWZZZZQQQQZZZZZZZZZZZZYKFFFFFFFFKKKKII
RRRRRRRRRRRRRXXXXQXXXXTTTDDDDJDDDDDDDDDDYQYYYIIYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZCCCRRRRRRRRRWRRZZZWWWWWWWWZZZQQQQQZZZZZZZZZZZZYFFFFFFFFKKKKKII
RRRRRRRRRRRRXXXXXXXXXXXXXDDDDDDDDDDDDDDDYQQYYYIYIYYYYYYYYYYYYYYZZZZZZZZZZZZZNCCCCRRRRRRRRUUUUZZZWWWWWWWWZZZQQQQQZZZZZZZZZZZZFFFFFFFFFKKKKKII
RRRRRRRRRRRRXXXXXXXXXXXXXXDDDDDDDDDDDDDYYYYYYYIIIYYYYYYYYYYYYYYYZZZZZZZZZZZZNXCCCWWWWWWWWWWWWWWWWWWWWWWWZZZQQQQQZZZZZZZZZZZZFFFFFFFFDFKKKKKI
RRRRRRRRRRRRXXXXXXXXXXXXDXDDDDDDDDDYYYDYYYYYYYYIIIIYYYYYYTYYAYTTTTZZZZZZZZZZNNNNNWWWWWWWWWWWWWWWWWWWWWWWZZZZZZZZZZZZZZZZZZZZFFFFFFFFFFKRKIII
RRRRRRRRRRRRXXXXXXXXXXXXXXDDDDYYYYYYYYYYYYYYYIIIIICCCCITTTTTATTLTTZZZZZZZZZZNFNNNWWWWWWWWWWWWWWWWWWWWWWWZZZZZZZZZQQQQTTKKKKFFFFFFFFFFFFRKIII
PPPPRRRRRRRXXJXXXXXXXXXXXXDDDYYYYYYYYYYYYYYYYIIIIIICCDTTTTTTTTTTTTZZZZZZZZZZNNNNNWWWWWWWWWWWWWWWWWWWWWWWGZZZZZZZZQQQTTTTKKKFWFFFFFFFFFRRIIRR
PPRRRRRRRRCXJJJXXXXTXXXXXXXDYYYYYYYYYYYYYAYYYYIAIIICCDDTTTTTTTTTTTZZZZZZZZNZNNNNNWWWWWWWWWWWWWYYWWWWWWWWQZZZZZZZZQQQTKKTKKKKKKQFFFFRRRRRRRRR
PPPRRRPJJJJJJJJJJJXXXXVIXXXYYYYYYYYYYYYYYAAYAPAAAXICCTTTTTTTTTTTTTTTTTZMMMNNNNNNNNGGGWWWWWWWWWYNWWWWWWWWQZZZZZZZZQQQQKKKKKKKKQQQQFFRRRRRRZRR
PPPPPPPPPJJJJJJJJJJVVVVVVXXYYKKYYYYYYYYYYYAAAAAAAXXCJXTTTTTTTTTTTTJTJJMMMMMNNNNNNNNNGWWWWWWWWWYNMMNNNNNNQZZZZZZZZQQQQKKKKKKKKKKKQKKKRRRZRZRR
PPPPPPPPPPJJJJJJJJJVVVVVVXKKKKKYYYYYYYYYYYYAAAAXXXXXXXXXTTTTTTTTTTTJJMMMMMMNNNNNNGGGGWWWWWWWWWYYNMNNNNNQQQQQQQQQQQQQKKKKKKKKKKKKKKKKRRRZZZRR
PPPPPPPPPJJJJJJJJJVVVVVVVVVKYKYYYYYYYYZZZYYYXXXXXXXXXXXXTTTTTTTTTTTTMMMMMMMMNNNNGGGGGWWWWWWWWWNNNNNNNNNNQQQQQQQQQQQQKKKKKKKKKKKKKKKRRRRRZZZR
PPPPPPPPPJJJJJJJVVVVVVVVVVIYYYYYYYYYYYYZZZZYXXXXXXXXXXXXTTTTTTTTTTTTMMMMMMMMNNNNNGGGGWWWWWWWWWNNNNNPNNNQQQQQQQUQQQQKKKKKKKKKKKKKKKKKRRRRRZZZ
PPPPPPPPPJJJJJJJVVVVVVVVVVYYYYYYYYYYYZZZZZZZXXXXXXXXXXAAAAATTTTTTMMMMMMMMMMMNNNNGGGGGWWWWWWWWWJJNNNNNNNAAQQNQQUQQQKKKKKKKKKKKKKKKKKKRRRRRZYY
PPPPPPPPPJJJJJJVVVVVVVVVVVVMYYYYYYYDDZZZZZZJXXXXXXXXXXAAAAAFTTTTTTNMMMMMMMHMNNNNGGGGGWWWWWWWWWJJGGGNNNNNAAPPPUUUQQKKKKKKBBBKKKKKKKKKRRRRYZYY
PPPPPPPPPPJJJJJJVVVVVVVVVVVMMYYYYYYDZZZZZZZZXXXXXXXXXXAAAAAAATTTFTTMMMMMMMMNNNNNNNGGGGGGGJJJJJLLGGGGGGNOPPPPPPUUUUUUBKBBBBBBKKKKKKKKKKYYYYYY
PPPPPPEEPJJJJJJJVVVVVVVVVVVMYYYYYYYDZZZZZZZXXXXXXXXXXXXAAAAAAATTPPPPMMMMMPPNNNNNNNGGGGGGGJJJJLLLLGGGGOOOOPPPPPPUBBBBBBBBBBBBBKKKKKKKKIIKYYYY
PPPPPPEEEJJJJJJJVVVVVVVVVVVVPYYYYYZZZZZZZZZZZXXXXXXXXAAAAAAAAATPPPPPMMPMPPPNNNNGGGGGGGGJJJJJGGGGGGGGOOOOOOPPPPUUBBBBBBBBBBBBBBKKKKKKKKKKYYYY
MPPPMMEEEJJJJJJVVVVVVVVFFFVPPPPPYPZZZZZZZZZZZZXXXXXXXAADDDAAAAAPPPPPPPPPPNNNNNNGGGGGGGBJJJJJGGGGGGGGGGOOOOPPPPPUBUBBBBBBBBBBBBKKKKKKKKKKYYYY
MMPPMMEEEEJJJJJJEEVGVVVEFEEWWWWPYPPPZZZZZZZZZZXXXXXXXXAADDDAMMMMMPPPPPPPPNNNNNNNNHHGJJJJJJJJJGGGGGGGGGGGOOPPPPPPPUUBBBBBBBBBBBAAKKKKKKKKYYYY
MMMMMMDDJJJJJEJJJEVVVVVEEEEWWWWPPPPZZZZZZZZZXXXXXXXXXAADDDDMMMMMPPPPPPPPPPNWNNNKNHGGJJJJJJJJGGGGGGGGGGGGGOPPPPPPUUUBBBBBBBKBBHAAKKFKKKKFYYYY
MMMMMDDDDJJJJEEJJEEEVVVNEEEWWWWPPPPZPWWZZZZZZZXAAXAAAAADDDDMMAAAPPBPPPPPNNNWNNNNJJJGJJJJJJJJGGGGGGGGGGGGGGPPPPPPPPBBBBBBBBBFFAAAAKFFFKKFYXYY
YMMMMDDDDDDDJJEEEEEEVEEEEEEWWWWWPPPPPWWWZZZZZZAAAAAAAAADDDDAAAAANPBBBBBUTURUUUUUJJJJJJJJJJJGGGGGGGGGGGGGGGPPXXPPGGGBBBBBBBFFFFAAAFFFFFFFYYYY
YMYMDDDDDEEEJJEEEEEEEEEEEEEWWWWWPPPWWWWWWZZZZZZAAAAACADDDDAAAAAANPDDDBUUUURUUUUJJJJJJJJJJJJGGGGGGGGGGGGGGGPGPPPPGGGBBBBBBBBBFAAAAFFFFFFFFYYY
YYYMDDDDDEEEEEEEEEEEEEEEWWWWWWWWWWWWWWWWMZZZZZAAAAAACAACDDAADAAADDDDDUUUUUUUUUUCJJJJJJJJJJJJJGGGGGGGGGGGGGGGGPPGGGGBBBBBBBBBFFFFFFFFFFFFFFYY
YYYEEEDDDEEEEEEEEEEEEEEEWWWWWWWWWWWWWWWWMZZZZZAAAAAACCACDDDADADAADDDUUUUUUUUUUJCJJJJJJJJJJJJJGGGGGGGGGGGGGGGGGGGGGGBBBBBBBBBBFFFFFFFFFFFFFFF
YYEEEEEEEEEEEEEEEEEEEEEWWWWWWWWWWWWWWWWWWZZZZAAAAAACCCCCCDDDDADDDDUUUUUUUUUUUUJJJJJJJJJJJJJJJJGGGGGGGGGGGGGGGGGGGGGBBBBBBBBBBFFFFFFFFFFFFFFF
YEEEEEEEEEEEEEEEEEEEEEEEWWWWWWWWWWWWWWWWWFFZZAAAAAAACCCCCDDDDDDDDDUUUUUUUUUUUUIJJJJJJJJJJJJJJJGGGGGGGGGGGGGGGGGGGGGGGGGBBBBBBBBFFFFFFFFFFFFF
YYYYEEEEEEEEEEEEEEEEEEEEWWWWWWWWWWWWWWWWFFFZZZAAAAAAACCCDDDDDDDDDUUUUUUUUUUUUUUUJJJJJJJJJJJJJJGOOGGGGGGGGGGGGGGGGGGGGGGGBBBBBBBFFFFFFFFFFFFF

90
src/day12.scala Normal file
View file

@ -0,0 +1,90 @@
package aoc
package day12
import scala.collection.{mutable as m}
val dayNumber = "12"
@main def part1: Unit =
println(part1(loadInput(dayNumber)))
@main def part2: Unit =
println(part2(loadInput(dayNumber)))
def part1(input: String): String =
val grid = parseInput(input)
val regions = findRegions(grid)
regions.map(r => r.area * r.perimeter).sum.toString
def part2(input: String): String =
val grid = parseInput(input)
val regions = findRegions(grid)
regions.map(r => r.area * r.cornersCount).sum.toString
def findRegions(grid: Map[Pos, Char]): List[Region] =
val visited = m.Set.empty[Pos]
grid.keySet.toList.flatMap(pos =>
if !visited.contains(pos) then
val region = exploreRegion(pos, grid)
visited.addAll(region)
Some(region)
else None
)
def exploreRegion(pos: Pos, grid: Map[Pos, Char]): Set[Pos] =
val stack = m.Stack(pos)
val region = m.Set.empty[Pos]
while stack.nonEmpty do
val pos = stack.pop
val plot = grid(pos)
region.add(pos)
stack.pushAll(
pos.neighbors.flatMap(pos =>
grid.get(pos).collect {
case n if !region.contains(pos) && n == plot => pos
}
)
)
region.toSet
type Pos = (Int, Int)
extension (pos: Pos)
def plus(offset: Pos) = (pos._1 + offset._1, pos._2 + offset._2)
def neighbors =
List(pos.plus(-1, 0), pos.plus(1, 0), pos.plus(0, -1), pos.plus(0, 1))
def neighborsWithDiagonal =
(for
x <- (-1 to 1)
y <- (-1 to 1)
if !(x == 0 && y == 0)
yield pos.plus(x, y)).toList
type Region = Set[Pos]
extension (region: Region)
def area = region.size
def perimeter =
region.toList.map(p => 4 - p.neighbors.count(region.contains)).sum
def doubleSize =
region.flatMap((x, y) =>
List(
(x * 2, y * 2),
(x * 2 + 1, y * 2),
(x * 2, y * 2 + 1),
(x * 2 + 1, y * 2 + 1)
)
)
def cornersCount =
val doubledRegion = region.doubleSize
doubledRegion
.count(p =>
p.neighborsWithDiagonal.count(doubledRegion.contains) match
case 3 | 4 | 7 => true
case _ => false
)
def parseInput(input: String): (Map[Pos, Char]) =
val grid = input.split("\n")
(for
y <- grid.indices
x <- grid.head.indices
yield (x, y) -> grid(y)(x)).toMap