init day12 part 1

This commit is contained in:
Adam Jeniski 2024-12-12 12:51:39 -05:00
parent 58bc591ae9
commit c461a96639
3 changed files with 216 additions and 8 deletions

140
2024/input/12.txt Normal file
View File

@ -0,0 +1,140 @@
FFFFVVVVCCCUUUUUUUUUUUUUUTUFFFFEEEEEEEXXBBBBBBBBBBBBBBEEEEEEEEEEEEECCCCCCCCCCCCCCCQQUUUZZZZZZZZZUZZZQUUUUUUIIIIIIIIDQQQQQQQQQNNNNNNNNNNNNNNN
FFFVVVVVVVVUUUUUUUUUUUUUUUUFFFFEEEEEEEXXXBBBBBBBBEEEEEEEEEEEEEEEECCCCCCCCCCCCCCCCCQQUUZZZZZZZZZZZZZZUUUUUUUIIFFFOIDDDDQQQQQQNNNNNNNNNNNNNNNN
FFFVVVVVVVVUUXUUUUUUUUUUUUUFXEEEEEEEEEXXXBBBBBBBBEEEEEEEEEEEEEEEECCCCCCCCCCCCCCCCQQQZZZZZZZZZZZZZZZZAUUUUUUOIFFFOIIDDDQQQQQQQQNNNNNNNNNNNNNN
FFFVVVVVVFFFUXUUUUUUUXUUXQXXXXXEEEEEEXXFFBBBBBBBBBBEEEEEEEEEEEEEEECCCCCCCCCCCQQCCQQQZZZZZZZZZZZZZZGZAAUUUUOOOOOOODDDDDDDDDDQQQQNNNNNNNNNNNNN
FVVVVVVVVVVFUUUUUUUXXXXXXXXXXRRXEEECEXXBBBBBBBBBBBBHEEEEEEEEEEEEECCCCCCCCCCCCCQQQQQQZZZCZZZZDDZGZZGAAAUUUUOOOOOOOOOFFDDDDDDDDQDNNNNNNNNNNNNN
FVVVVVVVVVVFUUFFUUUUXXXXXXXXXXXXEEVEEXXBBBBBBBBBBBHHHEEEEEEEEEEEECCCCCOCCCCQQQQQQQQQQZZZZZZZZZGGGZGAAAAUUUDDOOOOOOOODDDDDDDDDDDBBBNNNNNNNNNN
FFFVVVVVVVVFFUFFUUUUXXXXXXXXXXXXXEEEEXXBBBBBBBBBBBHHHHHEZZEEWWWEECECCCOOCCCCQQQQQQQQQQQZQZZZZZGGGGGAAAAUUUUOOOOOOOOODDDDDDDDDDBBBBNNNNNFFFNN
FFFFFFVVZVVFFFFFUUUUUUUXXXXXXXXXXXEXXXXXXBBBBBBBHHHHHFFJZZEWWWWWEEECCCOOCOOQQQQQQQQQQQQQQQZZZZGGGAAAAAKKKUKOOOOOOOOOODDDDDDDDBBBBBNNNFFWFFFF
CCCCFFFVVVVVFFAFUUUUUQXXXXXXXXXXXXEXXXXXXXBBBBBBBHHHHFCJJJWWEWWWWECCOOOOOOOQQQQQQQQQQQQQQQQQQZGGKAAAAKKKKKKOOOOOOOOOOOODDDDDBBBBBBBNNFFFFFFF
CCCRCCFVVFFFFFAFAUUZZQQXXXXXXXXXXXEENXXXXXXXBYYYYYYYFFCJJJJWWWWWWWWCOOOOOOOUUQQQQQQQQQQQQQQQQQQKKKKKKKKKKKKOOOOOOOOOOODDDDDDBBBBBBBNBFFFFFFF
CCCCCCFFFFFFAAAAAAZZZZXXXXXXXXEEEEEENNVVXXXNNYYYYYYYFFCCJJJWWWWWWWWOOOOOOOOUQQQQQQQQXXXQQQQQQQQPKKKKKKKKKKKOLOOOOOOOOODDDDDDDDBBBBBBBFFFFFFF
CCCCCCCFFFAAAAAAAZZZZZXXXXXXXXXEEEEVNNVVQQQNNYYYYYYYFFCCCWWWWWWWWWWJOOOOOOOOOQQQQQXXXXMQQQQQLQBPPKKKKKKKKKKKOOOOOOOODDDDDDDDDDDBBBBEBFFFFFFF
CCCCCHBBBFFFAAAAAAZZZXXXXXXXXXXEEEEVVVVVQNNNNYYYYYYYFFFCWWWWWWWWWWOOOOOOOOOOOOQQQQQXXXXQQQQEPPBPPPKKKKKKKKKOOOOOOJOOXDDDDDDDDDBBBBBBBBBFFFFF
BCBCCBBBBFFFAAAAAAAZZXZSXXXNXXEEEVEVAVVVNNNNNYYYYYYYFFFFFNNWFWWWWWPOOOOOOOOOOOZQQQZXXXXXPQLPPPBPPKKKKKKKKKKKKOOOOJJJXXDDDDDDDDGBBBBBBBBFFFFF
BBBBBBBBZZZZAAAABBBZZZZZZYNNNEEEVVVVVVVVVVYYYYYYYYYYFFFFNNWWWWWURWPOOOOOOOOAOOZQQQZXXXXXPPPPPPPPPUPKKKKKKKKKKPOJJJJJJXXDDDDDDDBBBBBBBBFFFFFF
BBBBBBBZZZZZZAABBBBZZZZZZNNNNEVVVVVVVVVVVVYYYYYYYYYYFFFFNNWNWWYUUAOOOOOOOOOOOJJJQHXXXXXXPPPPPPPPPPPPKKKKKKPPPPPDJJJXXXDDDDDDDGBBBBBBFFFFFFFF
BBBBBBBZZZZZZAAAZBBBZZBBBBNNNVVVVVVVVVVVVVYYYYYYYYYYMFNNNNNNWWUUUUOOOOOOOOOOOJJJHHXXXXXPPPPPPPPPPPPPKKKKPPPPPPPDJJJJXXXXDDDDDXXXBFFFFFFFFFFF
BBBBBBBFFFZZZZZZZBBBZBBBBBNNNNVVVVVVVVVVVVYYYYYYYYYYANNNNUUNUUUUUUOOOOOOOOOOJJJJJHXXXXXZPPPPPPPPPPPPPKJPYPPPPPPPJJXXXXXXDXDDXXXXKUUFFFFFFFFF
BBBBBBFFZFZZZZZZZBBBBBBBBNNNNNVVVVVVVVVVVVYYYYYYYYYYANNNUUUUUUUUUUOOOOOOOOOOJJJJJXXXXXXZPPPPPPPPPPPPPKJPPPPPPPPPJJXXXXXXXXXDXXXXXUUFFFFFFFFF
BBBBBFFZZZZZZZZZZBBBBBBBBNNNNNNNVVVVVVVVVYYYYYYYYYYAANNNNNUUUUUUUOOCOOOOOJJJJJJJJXXXXXXXCPPPPPPPPPPPPKJJPJPPPPPPXJXXXXXXXXXXXXXXXUUUUFFFFFFF
BBBBBFFZZZZZZZZZZBBBBBBBBNNNNNNNNVVVVPVVVYYYYYYYYYYYYYYNNNUUUUUUUCCCUUUUOJJJJJJJJJXXXXXXXPPPPPPPPPPPPJJJJJPPPPXXXXXXXXXXXXXVXXXXUUUUUUUUUFFF
BBBBFFFZZZZZZZZZBBBBBBDDDNNNNNNNNNVVVVVVVYYYYYYYYYYYYYYNNIUUUUUUCCCCUUUUOOOOOJJJJJXXXXXXXPPPPPPPPPPPPJDDDPPPPCXXXXCXXXXXXXVVVVUUUUUUUUUUUUFF
VBBBBBFFZZZZZZZZZZBFFBDDDDDNNNNNNNVVVVVVVYYYYYYYYYYYYYYANIIUUUUUUUUUUIIIOOOOOJJJJXXXJKXXQPPPPPPPPPPPJJDYDDPPPPPDDCCCXXXXXXVVVVSUUUUUUUUUUUFF
VBBBBFFFZZZZZZZZZZBFFBBBDDDDNNNNNNNNNNNVWYYYYYYYYYYYYYYANIIIIIUUUUUUUUIIOOOOOJJJJJJJJJUXQQPPPPPPPPEEDJDDDDPPDPPDNCCCXXXXXVVVVGUUUUUUUUUUUUFF
BBBBFFFFFZZZZZZZZZZFFFFBDDDDNNNNNNNNNNNNXYYYYYYYYYYYYYYANIIIIIIUUUUUUIIIOOOOOIJJJJJHJUUUPPPPPURRPAAADDDDPPPDDDDDDCCCCXXXXVVVVUUUUUUUUEUGGGFF
BBBFFFFFFZFZZZZZFZFFFFFBDDDNNNNNNNNNNNNNXXYYYYYYYYYYYYYAAIIIIIIIUUUUUIIIOOOOOIJJJJJUUUUUUUPNPUURRAAADDDDDDDDDDDDFCCCCXXXXXPPPPUUUUUUUGGGGGGG
FFFFFFFFFFFZZZZZFZFFFFDDDDDNNNTNNNNNNXXKXXYYYYYYYYYYYYYAIIIIIIIIUUIUUIIIOOOOOIIIJJJUUUUUUUUUPUURRAAAADDDDDDDDDDDCCCCCCXXXXPPPPGBBUUUUGGGGGGG
FFFFFFFFFFFFFZZZFFFFFFDDDDDNTTTNNNNCCXXXXXXXXMYYYYYYYYYCCIIIIIIIIIIIUIIIIIIIIIIIJTUUUUUUUUUUUUUAAAAAYYDDDDDDDDDDDDCCCEXXYXEPPGGBBUUUUGGGGGGG
FFFFFFFFFFFFFFZFFFFFFFFDTWTTTTTTNNNCCXXXXXXXXXYYYYYYYYYCCIIIQQIIIIIIUUUIIIIHHHHHHIBBUUUUUUUUUUAAAAAADDDDDDDDYEEEEECCCEXBEEEPPPGGGGGGGGGGGGGG
FFFFFFFFFFFFFFZFFFFFFFTLTTTTTTTTNNLXXXXXXXXXXXYYYYYYYYYIIIIIIIJIIICUUHHHHIIHHHHHHIIBUUUUUUUUUUAAAAAAAAAADDDDYEEEEEEEEEEEEEEEEPGGGGGGGGGGGGGG
FPFFFFFFVVFFFFFFFFFTTTTTTTTTTTTNNNXXXXXXXXXXXXXXSSSSCCWWWIIIIWWWWIIKIHHHHHHHHHHHHLLUUUUUUUUIIAAAAAAAAAADDDDDYEEEEEEEEEEEEEEEPPGGGGGGGGGGGGGG
PPPFFFFFVFFFFFFFFFTTTTTTTTTTTTTNNNNXXXXXXXXXXXXXUUUSCUUWWWWWWWWWWIIKKHHHHHHHHHHHHRRMMUUUYUUIIIAAAAAAAAAAAAAAYYEEEEEEGEEEEEEXGGGGGGGGGGGGGGGG
PPPFFFFFFFFFFFFFFFTTTTTTTTTTTTTTNNNXXXXXXXXXKKKKUUUUUUUUWWWWWWWWWWTTTHHHHHHHHHHHHRRRRRUUURUUUIAAAVAAAAAAAAAYYEEEEEEEGGEERRRRCCGGGGGGGGGGGGGG
PPPPPPPFVVFFFFFFFFFFYTTZTTTTTTGTNNXXXXXXXXXXKKKUUUUUUUUUUWWWWWWWHHHHHHHHHHHHHHHHHRRRRRRRRRERIIIAZVAAAAAAAAAYYEEEEEEEGGGRRRRRCEEEEGGGGGGGGGGG
PPPPPPPFVVFFFFFFFFFFTTTTTTTTTTGGGGXXXXXXXXXKUUKUUUUUUUUUUUUWWWWWHHHHHHHHHHHHHHHHHRRRRRRRRRRRRRRRRVVVAAAAAAYYEEEEEEEGGGGRRRRRCEEEEEGGGGGGGGGX
PPPPPPPFVVFFFFFFFFFFAATTTTTTTAGGGGGEXXXXXXKKKUUUUUUUUUUUUUUUWWWWHHHHHHHHHHHHHHHHHRRRRRRRRRRRRRRRRVAAAAAAAAAAJJEEEEEEGGGRRRRRRTEEEEEELLLGGGXX
PPPPPPPPPVVVFFFFFFFFATTTTTTTTTGGGGGEEXXXXXKKKUUUUUUUUUUUUUUWWWIIHHHHHHHHHHHHKKKKKRRRRRRRRRRRRRRRRAAAAAAAAAAJJEEEEEEEGGGRRRRRRTEEEEEIQLXXGGXX
PPPPPPPPPVVFFFFFFFFFFLLTTSSGGGGGGGGGEXXXKKKKKKKUUUUUUUUUUUUWWWIIHHHHHHHHHHHHKKKKKKKRRRRRRRRRRRRRRABAAAAAAAJJJEEEEERRGGGRRRRRRRRQQQQQQLXXXXXX
PPPPPPPPPPPFFOFFFJJFLLLTTGGGGGGGGGGEEEEEEEKEEEEUUUUUUUUUUUUWWWIIHHHHHHHHHHHHKLLLKKKKMMMRRRRRRRRRRRRTAAAAGAJGJGGERRRRGRRRRRRRRQQQQQQQQLLXXXXX
PPSPPPPWAPPOOOFJJJLLLLLGGGGGGGGGGGGGEEEEEEEEEEEEUUUUUUUUUUUWWWWIHHHHHHHHHSSKSLLLLKKMMMMMRRRRRRRRFRTTTAAAGGGGGGGERRRRRRRRRRRRRRRQQQQQQQXXXXXX
PPSSSPPWWPOOOOOOOOOLLLLLLLGGGGGGGGGEEEEEEEEEEEEEUUUUUUUOUUUWQWUIHHHHHHHHHSSSSLLLKKKMMMMMMRRMMRRRRRTTTTTTTGGGGGGGGRRRRRRRRRRRRQQQQQQQQQXXXXXX
SSSWWWWWVPOOOOOOOOOLLLLLLLGEEEGGGGGEEEEEEEEEEEEEEUUUUUUOJJJJUUUUHHHHHHHHHSSSSSLLLLLMMMMMMMMMMMRJTTTJJTTTTTTGGGGGGGRRRRRRRRRRRQQQQQQQQWXXXXXX
SWWWWWWWWCOOOOOOOOOLLLLLLLLEEGGGGGEEEEEEEEEEEEEEEUUUUUOOOJJJUUUUHHHHHHHHHHHHSSLLLLLMMMMMMMMMHHJJJJJJJJJJTTGGGGGGGGRRRYRRRRRRRQQQQQQQQXXXXXXX
SSWWWWWWWWOOOOOOOOOLLLLLLLLELEGGGGEEEEELEEEEHEEHSSOUOUOOOOJJJUUUUSSHHHHHHHHHSSSSSSGGGMMMMMHHHCCJJJJJJJJTTTGGGGGGGGRRYYYRRQQQQQQQQQQQQQSSSXXX
OWWOOWWWOOOOOOOOOOLLLLLLLLLLLEEEEEEELLLLEEEEHHHHHHOOOOOOOOJJUUUUUUUHHHHHHHHHSSSSSSSGMMMMHHHHHAJJJJJJJJJJTTGGGGGGGGRPYYRRRQRQRRQQQQQQQQQSSXBX
OOOOOOOOOOOOOOOOOOOLLLLLLLLLLEEEEEEELLLLEEEEHHHMMMMOOOOOOOOJJUUUUUUUHHHHHHHHSSSSSAGGHHHHHHHHHAAJJJJJJJJJJTTGGGGGYGYYYYYRRRRRRQQQQQQQQIBSBBBB
OOOOOOOOOOOOOOOOOOOLLLLLFFFLLEEEEELLLLLLHEEHHHHMMMMOOOOOOOOJJUUUUUUUHHHHHHHHSSSSAAGGGHHHHHHHHHAJJJJJJJJTTTTGGGGGYYYYYYYYRRRRRRRZZZZZBIBBBBBB
OOOOOOOOOOOOOOOOROOLLLLLLLFVFEEEELLLLLLLHHHHHHHHMMOOOOOOOOOJJPPPPSSSHHHHHHHHSSSAAAGGHHHHHHHHHAAJJJJJJJJTTTTTTGTTTTYYYYYYYRRRRRRRZZZBBBBBBBBB
OOOOOHHHHOOOOOORRRRLLLLLLFFFFEEEELLLLLLHHHHHHHHHHMMMOOOOOOJJJPPPPJSSHHHHHHHHSSAAAAAGHHHHHHHHAAAJJJJJJJTTTTTTTTTTTTYYYYYYYRRRRRRRBZZBBBBBBBBB
OOOOHHHHHOOOOORRRRRRRLLLLYFFFFLLLLLLLLLHHHHHHHHHHMMOOOOOOJJJJPJPJJSSHHHHHHHHSAAAAAAAHAHHHHHHAAAAJJJJTTTTTTTTTTTYYYYYYYYYYRRRRRRRBBBBBBBBBBBB
OOOOHHHHOOOOOOORRRRLLLLLYYFFFFFLLLLLLFFHHHHHHHHHHHOOOOOOOJJJJJJJJJJJHHHHHHHHSSAVAAAAAAAAHHHHHAAAJJJTTTTTTTTTTYYYYYYYYYYYYYRRRRRRDDFBBBBBBBBB
OOOOOOHOOOOOOORRRRRLLHLLYYFFFFFFLLLLFFFFFHHHHHHHHHJJOOOOOJJJJJJJJJJJJPPSSPPPSVAVVAAAUAUAHHHHAAAAAJJAATTAAAAATYYYYYYYYYYYYYVRRZZZDDDBUBBBBBBB
OOOOOOOOOOOOOOOORRRLLHHHHFFFFFFFFLFFFFFFFHHHHHHHHJJJJOOOJJJJJJVJJJJJJPPPPPPPVVVVVVUUUAUAAAAAAAAAAAAAATAAAAAAAOYYYYYYYYYYTYVRZZZZDDDBBBBBBBBB
OOOOOOOOKKOOOORRRRRRLHHHHFFFFFFFFFFFFFFFFHHHHHHHHJJJJJOJJJJVVVVVJOOJPPMPPPPVVVVVEUUUUUUUAAAAAAAAAAAAAAAAAAAAAUUUUYYYYYYYYYYYZZZZZZZZBBBBBBBJ
OOOOUUOOKKOOOOKRRRRBHHHHHFFFFFFFFFFFFFFFHHHHHHHHHHSSJJJJJPPPPPPQOOOJPPPPPPPYYVVVUUUUUUUUAAAAAAAAAAAAAAAAAAAAAAUUYYYYYYYYYYYZZZZZZCCZZBBBBBBJ
OOOUUUUKKKKKKKKRRRRHHHHVHHRFFFFFFFFFCFHHHHHHHHHHHHSSSJJJPPPPPPQQQOOOPPPPPPPPPOVKUUUUUUUUUUAAAAAAAAAAAAAAAAAAAUUUYYYYYYYYYYLEEEZZCCCCCCBBOBVJ
POOUUUUKKKKKKKGGRRSSHHVVVRRRFFFFFFFCCCCCHHHCHHHHHHRSSJJJPPPFPPQQVOOOOOPPPPOPOOUUUUUUUUUUUAAAAAAAAAAAAAAAAAAAAAUUYYYYYYYYYLLEEELZCCCCCCXBOVVJ
POUUUUUKKKKKKKSSRRRSHHRRRRRRRRFFFFCCCCCCCHHCHHHHHHSSSSSPPPPPPPPQVOKKKOOOOOOOOOUUUUUUUUUUAAAAAAAAAAAAAAAAAAAAAUUUYYYYYYYYYRRRRRRRRRRCCCCCOVVJ
POUUUUUUKKJJYYYSRSSSHRRRRRRRRRRCFCCICCCCCCCCHHHHEEEEEEEPPPPPPPPQVVVKKKOOOOOOOOOUUUUUUUUUAAAAAAAAAAAAAAAAAAAAAAUUUYYYYYYYYRRRRRRRRRRCCCCCCVVV
PPUUUUUUJJJJJJSSSSSBBIRRRRRRRRRCFCCCCCCCCCCCCCEEEEEEEEEPPPPPPPPQVVVKKOOOOOOOOOTPPUUUUUAAAAAAAAAAAAAAAAAAAAAAUUUUUUYYUUYYYRRRRRRRRRRCCCCCVVVD
UUUUUUJUJJJJHJSSSSSBBRRRRRRRRRRCCCCCCCCCCCCCCCEEEEEEEEEPPPPPPPPQVVHKKKOOOOOOOOTPPPUUUUAUAAAAAAAAAEAAAAANGAAAUUUUUUUYUULYLRRRRRRRRRRVVVVVVVVD
JUUUJJJJJJJJJESSSBBBBRRRRRRRRRRCPCCCCCCCCCCCCCEEEEEEEEEPPPPPPPPPPPKKKKKOOOOOOTTPPUUUUUUUUUAAAAAAAEEEAANNNNNUUUUUUUUUUULLLRRRRRRRRRRVVVVVVVVD
JJUJJJJJJJJJJSSSSVBBBRRRRRRRRRRRPCRCCCCCGCCCCCEEEEEESPPPPPPPPPPPPPKKKKKKKOOOOTTPPPUUUUUUUUAAEEEEEEEEANNNNNNUUUUUUUUUUUUULRRRRRRRRRRVVVVVVVVV
JJJJJJJJJJJJUUUBBBBBBCCCCRRRRRRRKRRRRRRRCCCCCCEEEEEESPPPPGPPPPGPKKKKKKKJKTTTTTTTTUUUUUHUUUUUUEEEEEEENNNUUUUUUUUUUUUUUULULRRRRRRRRRRVVVVVVVVV
JJJJJJJZZZJUUUUUUCBBCCCCCCCRRRUKKKKRRRRCCCCCCCEEEEEEGGGPGGPGGPGGKKKKKKKKKTTTTTTTTTUUHHHHUUUUUEEEEEEENNNNNNNUUUUUUUUURRRRRRRRRRRRRRRVVVVVVVVV
JJJJJJZZZZZUZUCCCCBBCCCCCCCCGGKKKKRRRRRCCCCCCCEEEEEEGGGGGGGGGGGGKKKKKTTTTTTTTTTTTTTUHHHHHHHHULEEEEEEGNUGGNNNNUUUUUUURRRRRRRLLLUUUUSVVVVVVVVV
JJJZJJZZZZZZZUZJCCCCCCCCCCCCCCOKKKRRRRRRCCCCCCEEEEEEGGGGGGGGGGGGGKKKKKITTTTTTTTTTTUUHHHHUUUUULEEEEEGGCGGNNNNUUZZUUUJRRRRRRRUUUUUUUUUVVVVVVVV
JJJZZZZZZZZZZZZJCCCCCCCCCCCCOOOKKKRRRRCCCCCCCCEEEEEEGGGGGGGGGGGGGGGGIIITTTTTTTTTTTTHHHUHHUUUUUEEEEEGGGGGGGGGGGGZZZUJRRRRRRRUUUUUUUUUUUUUUVVV
JZZZZZZZZZZZZZZZZCCCCCCCCCCOOKKKKKRRRCCCCCCCCCCCCPGGGGGGGGGGGGGGGGIIIZZZATTTTTTTTTHHHHUUUUUUUUAAAEEGGGGGGGGGGGGGGGLLRRRRRRRUPUUUUUUUUUUUUUVV
JZZZZZZZZZZZZZZZCCCRRCRRCCCCOORKRKRRRRCCCCCCCCCCCGGGGGGGGGGGGGGGGGGIIZZZAZTTTTTTTTTHHUUUUUUUUUUAUGGGGGGGGGGGGGGGGGGLLLLLLLLLLPPUUUUUUUUUUUVV
JZZZZZZZZZZZZZZOOCCRRRRRCCCCVORRRRRRRRRRCCCCCCCCCCGGGGGGGGGGGGGGIGIIIZZZZZTTTTTTTTTHHHUUUUUUUUUUUGGGGGGGGGGGUGGGGGGLGLLLLLLLUUUUUUUUUUUUUUVV
JJZZZZZZZZZZZZZOOOCRRRRRRCCRVVVRRRRRRRRCCLLCCCCCCGGUUUUGGGGGGGGGIGIIIZZZZTTTTTTTTTTHHHUUUUUUUUUUUGGGGGGGGGGGGMMGMMGGGLLLLLLLAUUUUUUUUUUUUUVV
JJZZZZZZZZZZZZZORRRRRRRRRRCRVVVRRRRVVRDLLLDDFCCCCUUUUUUUGGGGGGGGIIIIIZZZZTTTTTTTTTHHWWXWWWUUUUUDUDGGGGGGGGGGMFMMMMGGGGLLLLLAAAAUUUUUUUUUUVVV
JJZZZZZZZZZZZZZQQERRRRRRRRRRVVVVVVVVDDDDDDDDFFFYUUUYUUUUGGGGSSGIIIIIIIZIJTTTTTTTTTTHWWWWWWUUUUUDDDDGGGGGGGGGMMMMMMMMGGLLLLLAAAAUUUUUUUVUUUVV
JJJJZZZZZZZZZZQQRRRRRRRRRRRRRVVVVVVVVDDDDDDFFFFYYUYYYUGGGIIGSEGEEIIIIIIIJJJTTTTTTWHHWWWWWWWWWUDDDDDGGGGGGGGGPMMMMMXMMMLLLLAAAAAAUUUUUUVVVVVV
JJJJJZZZZZZZZZQQRRRRRRRRRRRRRVRRRVVVDDDDDDDDFYYYYYYYYYXXGGGGEEEEEIIIIIIJJJJJJTTTTWWWWWWWWWWWWDDGDGDGGGGYGGGGPMMMMMMMMALLAAAAAAAAUUUUVVVVVVVV
JJJJZZZZZZVQZQQRRRRRRRRRRRRRRRRRRRRDDDDDDDDDDYYYYYYYYYXXXXXEEEEEEIIEIIIJJJJJJTTTWWWWWWWWWWKKWDDGGGGGGGGVVGGGMMTMMMAMAAALAAAVAAAVXXUUUVVVVVVV
JJJJZZZZZQQQQQQRRRRRRRRRRRRRRXXRRRRRDDDDDDDDDYYYYYYYYYYXXXXXXEEEEEEEIIJJJJJJJJTTJJWWWWWWWMMMWDGGGGGGGGXVVGGGBMTMMMAAAALLAAAVVAVVXUUUVVVVVJVV
JJJJZZZULQQQQQQRRRRRRRRRRRRRRRRRRRRDDDDDDDDDDYYYYYYYYYYYXXXXXXEEEEEEJIJJJJJJJJJOXXWWWWWWWMMMDDGGGGGGGGVVVGVVMMMMMMAAAAAAAAVVVVVXXXXXVVVVJJVV
JJJUUZZULLQQQQQRRRRRRRRRRRRRRRRRRRRRRRDDDDDGYYYYYYYYYYYYXZZXXXEEEEEEJJJJJJJJJJJXXXZWWWFFFMCMDDDDGGGGGGVVVVVMMMMMMMMAAAAAAAVVVVVXXVXVVVVJJJVV
JJJUUUUUUQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRDDDDDRYYYYYYYYYZYXZZXXXEEEEEEJJJJJJJJJJJXXXXFFFFFFDDMDDDDDGGGGGVVVVVAMMMMAAAAAAAVAVVVVVVVXVVVVVJJJJJV
JUUUUUUUUUQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRDDDHRYYYYYYYYYZXXXZZXXEEEEEEJJJJJJJJJJJJXXXXXXXXDDDDDDDDDGGGGGGVVVVAAAMAAADAAAAVVVVVVVVYVVVVRJJJJJJV
JUUUUUUUUUQCQQQQRRRRNNRNRRRRRRRRRRRRRRRRRRRRRRYYYYYYYYZZXZCZZEEEEEEEEEJJJJJJJJJJXXXXXXDDDDDDDDDGGGGGGGGGVAAAAAAAADDDDDDVVKVVVVVYVQQJJJJJJJJJ
JJUUUUUUUUCCCCCVRRRRNNNNNRRRRRRRRRRRRRRRRRRRRRRYYYYYZZZZZZZZZZZEEEEEEEEJJJJJJJJJJXXXXXDDDDDDDDDGGGGGGGGAAAAAAAAAADDDDDDVVVVVVVYYVQQJVJJJJJJJ
JVUUUUUUUCCCCCCVVVNNNNNYYQYYRRRRRRRRRRRRRRRRRRRYYWWYYYYZZZZZZZZEEEEEEEEJJJJJJJJJJXXXDDDRRDDDDDDGGGGGGGGGAAAAAAAAADDDDPWVPPPPVVYVVJJJJJJJJJJJ
VVUUUUUUUVVCCCVVVVNNNNYYYYYYRRRRRRRRRRRRRRRRRRRYWWWYYYYZZZZZZZYEEEEEEEEEKJJJJJJYJJXRRRRRDDDDDDDGGWWWGTIIAAAAAAAAADDPPPPPPPPPPVPRJJJJJJJJJJJJ
VVUUUUUUUUVVVVVVVVVVYNYYYYYYRRRRRRRRRRRRRRRORZZYWWWYYYYYZZZZZZZLZZZEEEEEKKKJJJYYYYYYYRRDDDDDDDDWWWWGGTIAAAAAAAAADDDPPPPPPPPPPPPJJYJJJJJJJJJJ
VVVVUUUUUVVVVVVVVVVYYYYYYYYYYRRMRRRRMMMRRRROOWZZWWWYYYYYZZZZZZZZZSSEEEEEEKKGGJYYYYYYYRBBDDDDWWWWWWWWTTIITAAAALAKDDDDPPPPPPPPPPPJJJJJJJJJJJJJ
VVVVVVUUUUVVVVVVVVVDYYYYYYYYYRMMMMRRMMRRRFWWWWWWWWWWWYYZZZZZZZZSSSSSEEKEEKKGGYYYYYYYJBBJDDDDWWWWWWWWTTTTTAAAALADDDDDPPPPPPPPPPPPPJJJJJJJJJJJ
VVVVUUUUUVVVVVVVVVVVYYYYYYYYYMMMMRRMMMMRRWWWWWWWWWWWWYWGZZZZZZQSSSSSSSKKKKKGGGYYYYYYJJJJEDDDDWWWWWWWTTTTLAALLLLXXXXXXXKXPPPPPPPPPJJJJJJJJJJJ
VVVNNNUNVVVVVVVVVVBBYYYYYYYYMMMMMMMMMMHHYWWWWWWWWWWWWWWWWWZZZZZSSSSSSSKKKKKKGGYYYYYYJJJJEDDDDWWWWWWWWLLLLLLLLLLXXXXXXXXXPPPPPPPPPFJJJJJJJJJJ
VVVNNNNNVVVVDUCVVVBBYYYYYYYOOMMMMMHMMMHHHHWWWWWWWWWWWWWCCZZZZZSSSSSSSKKKKKKKKKKKKYYYJJJJEEXXDWWWWWWLLLLLLLLLLXXXXXXXXXXXXXPPPPPPPFFFFJJFFFJJ
VVVVVNNNNVVJUUUUULUUYKYYYYOOOMMMHMHMMMHHHHWWWWWWZWWWWWWCCCCZZSSSSSSSZSYKKKKKKKKYYYYJJJJJJXXXXXXWWWWLLLLLLLLLLXXXXXXXXXXXZZZZPPPPFFFFFJFFFFJJ
RRRNNNNNNJJJUUUUUUUUUOOOYYOOOOMMHHHMMMHHHHHAWWWWZZZWWWCCCCVSSSSSSSSSSSSCKKKKKKKYYJYJJJJJXXXXXHHXXWWLLLLLLLLLLXXXXXXXXXXZZZZZZZZZZFFFFFFFFFJJ
RRRNNNNNNJJJUUUUUUUUUUOOOOOOOMMMHHHHHMMHHHAAAWWZZZZZWWCCCCVVSSSSSSSSSSSCCCKKKYYYYJJJJJJJJXXXXXXXZZZZLLLLLLLLLXXXXXXXXXXZZZZZZZZZZFFFFFFFFFFF
RRNNNNNNNNNUUUUUUUUUUUOOOOOOYHMHHHHHHHMMMMOAUWWWUUUUUUUUUURVSSSSSSSSSSCCCCCQYYYYYJJJJJJJJXXXXXXXXZZLLLLLLLLLLLXXXXXXXXXZZZZZZZZFFFFFFFFFFFFF
RRNNNNNNNNUUUUUUUUXXUOOOOOOOHHHHHHHHHHHHMOOAUUUUUUUUUUUUUUVVVSSSSSSSSCCCCCQQYYYYJJJJJJJJJXXXXXXXZZZZZYHLLLLLLLLXXXXXBBBBBBZZZZFFFFFFFFFFFFFF
NNNNNNNNNUUQUUUUUUXOUOOOOOOHHHHHHHHHHHHHOOOOOOUUUUUUUUUUVVVVVVSSSSSSSCCQQQQQQQJJJJJJJJJXJXXXXXXZZYZYYYYJJJJLLLLLXXXXXBBBBBBZBBFFFFFFFFFFFFFF
NNNNNNNNNUUUUBBBUUUOOOOOOOOOHHHHHHHHHHOOOOOOOOUUUUUUUUUUVVVVVVVVVCSSCCQQQQQQQQQJJJJJJXXXXXXXXXXYYYYYYYYJJJJLLLLLLLXBBBBBBBBBBBFFFFFFFFFFFFFF
WNNNNNNNNNUBBBBBUUYOOOOOOHHHHHHHHHHHOZOOOOOOOOUUUUUUUUUUVVVVVVVCCCOSCQQQQQQQQFFVVJJJJXXXXXXXXXXYYYYYYYJJJJJJLLLLJXXXXXBBBBBBBBBFFFFFFFFFFFFF
WNNNNNNBNBBBBBBBUUOOOOOOOOHHHHHHHHHHOOOOOOOOOOUUUUUUVVVVVVVVQVVCCCSSQQQQQQQQFFFVVJJJJNNNXXXXXXXYYYYYYYYJJJRJJXLLLXXXXXBBBBBBBBFFFFQQQFFFFFFF
WWNNNNBBBBBBBBBBBBBBOPOOOOOHHHHHHHHHHOOOOOOOOOUUUUUUUVVVVVVVQQQQCCSSXQQQQQQMFFFFFJBNNNNNXXXXXXYYYYYYYXXXJJJJXXLLXXXXXXXIBBBBBBFFFFQQQFFFFFFF
TTNNWWWBBBBBBBBBBBBBBBQOOHHHHKHHHHHHHZOOOOOOOOOOUUUUUVVVVVQQQQQQQQQQQQQQQQQFFFFFBBBNONNNXXXXXYYYYYYYYNNXXXXXXXXXXXXXXXIIBIIIIBBFFFQQQFFFFFFF
TTTTTWWBBBBBBBBBBBBBBKQOOHHHHHHHHHHHZZOOOOOOOOOOUUUUUVVVVQQQQQQQQQNQQQQQQQFFFFFFBBBOONNNXXXXXXXYYYYYNNNNXNNNNNXXXXXGXXIIIIIIIBBFFFQQQFMMFFFF
TTTTTWWBBCBCBBBBBBBBBQQQHHOOHHHHHHHHZZZOZOOOOOOOUUUUVVVVVVQQQQQQQQQQQQQQFFFFFFFFFBBOOOONXAXAXXYYYYYYYYNNNNNNNNNXXXXGGGBIIIIIIIBFFFQQQMMFFFQF
TTTTTTWWWCCCBBBCCBQBQQQQQQOHTHHHHHHHZZZZZOOOOOOOUUVVVVVVVVQQQQQQQQQQQQQFFFFFFFFFBBBOOOOOAAAAYYYYYYYYYNNNNNNNNNNXXXBGBBBBIIIIIIBFQQQQQQQQFQQQ
TTTTTTTWCCCCBCCCCQQBUQQQQQOHHHHHHHHHZZZZZZZZOOOOUVVVVVVVVQQQQQQQQQQNNQQZZZFFFFFFOOOOOOOWWWWAWYYYYYYYYYNNNNNNNNXXXBBBBIIBXIIIIIIZQQQQQQQQFQPP
TTTTTTJCCCCCCCCCCQQQQQQQQQQPHHHHHZZZZZZZZZZZZOSVVVVVVVVVVQQQQQQQQQQQNQQZZZZZZFFFOOOOOWWWWWWWWYLLYYYYYKNNNNSNNNXXXXXBBBIIIIQQQQQQQQQQQQQQMQQP
TTTTTTTCCYYYYYYCQQQQQQQQQQQPZHHZZZZZZZZZZZPZZOPVVVVVVVVVVVQQQQQQQQQQQQQZZZZZZFFFOOOOOWWWWWWWIHLYYKKYKKKNNNWWNNNNXXXXBBDIZZQQQQQQQQQQQQQQQQQQ
TTTTTTTCCYYYYYYCQQQQQQQQQQKZZZZZZZZZZZZZZPPPPPPPPVVVVVVVVVQQQQQQQQQQQZZZZZZZZZFWOWOWWWWWWWWWWHHJHKKKKKKKNNWWNXXXXXXXBZDIZZQQQQQQQQQQQQQQQQQQ
TTTTTTXXYYYYYYYCCQQQQQQQKQZZZZZZZZZZZZZPPPPPPPPPVVVVVVVVVQQQQQQQQQQQZZZZZZZZZZFWWWOWWWWWWWWWWHHHHHHHHHHWWWWYNXXXXXXXXZZZZZXZZZZQQQQQQQQQQQQG
TTTTTXXXYYYYYYYCCQQQQQQQKZZZZZZZZZZZZZZPPPPPPPPPPPVVVVVVVQVQAQQQBQQQZZZZZZZZZZZWWWWWWWWWWWWWLHHHHHHHHWWWWWWWWWXWXXXXXXXZXXXXZZZQQQQQQQQQQQGG
THTTXXXXYYYYYYYCQQQQQQQQWWZDZZZZZZZZZZZZPPPPPPPPPPPVVVVVVVVVQQQQQQQZZZZZZZZZZZWWWNWWWWWWWWWHHHHHHHHHHHHWWWWWWWWWXXXXXXXXXEEXZZQQQQQQQQQQQQGG
TTXXXXXXYYYYYYYQQQQQQQZQWWDDZZZZZHZZZZPZPPPPPPPPPPPVPPVVVVVQQQQQQUUZZZZZZZZNNNNNNNWWWWWWWWWHWHHHHHHHHHHWWWWWWWWWWXXXXXXXEEEZZZQQQQQQQQQQGGGG
XXXXXXXXYYYYYYYTQQQQQQWWWWWDDZZZHHHZZZPPPPPPPPPPPPPPPCDVDVVQQQQQQQZZZZZZZNMNNNNNNWWWWWWWWWWWWWBHHHHHHHHWWWWWWWWWWXXXXEEEEEEEMMQQQQQQQQQQGGGG
XXXXXXXXXXXXXXTTTQQTQEWWWWWWWIHIHHHHZZZPMPPQPPPPPPPPPCDVDDDQQQQBQQZZZZZZNNNNNNNNNNNNWWWWWEEWWRBHHHBBHWWWWWWWWWWWWWXXEEEEEEEEEEQQQQQGGGGGGGGG
LXLLLLXXXXXXTTTTTTTTWWWWWWWWWWHHHHHHZHHQMQQQQPPPPPPPCCDDDDDOOQBBBQQZZZZZNNNNNNNNNNNNWWWWEEEEERBHBBBBBBWWWWWWWWWWWWXXXEEEEEEEEEQQQGGGGGGGGGGG
LLLLLLXXXXXXTTTTTTTUWWWWWWWWHHHHHHHHHHHQQQQQQQPPPCPCCCCDDDDDDDBBBBZZZZZNNNNNNNNNNNNWWWWWEEEEEEBBBBBBBBWWWWWWWWWWWXXXXEEEEEEEEEQQQGGGGGGGGGGG
LLLLLLXXXXTXUUTTUUUUWWWWWWWWHHHHHHHHHHHQQQQQQQPPPCCCCCCDDDDDDDDBBBZIZHZNNNNNNNNNNNWWWWWWEEEEEABBBBBBBBWWWWWWWWWWWWXEEEEEEEEEEEQQQGGGGGGGGGGG
LLLLLLXBTTTUUUUUUUUUWWWWWWWHHHHHHHHHHHHHQQQQTTPPPCCCCCDDDDDDDDABBBBZIZZNNNNNNNNNNNWWWWWWEEEEEBBBBBBBBBBWWWBWWWWWWWWNEEEEEEEEEEQQQGGGGGGGGGGG
LLLLLLLBTTTUUUUUUUUUWWWWWWWWHHHHHHHHHHHHQQQQQQPPCCCCCDDDDDDDDDDBBBBZZZZNNNNNNNNNNNWWWWWWWVEEBBBBBBBBBBBBWBBBWWWWWWWOOEEEEEEEEEELLGGGGGGGGGGG
LLLLMMBBUUUUUUUUUUUWWWWWWWWWWHHHHHHHHHHHBQQQQBBBBBCCCCDDDDDDDDDDBBBZBBBNNNNNNNNNNNNOOWWVVVBBBBBBBBBBBBBBBBGOWWWWFOOOOEEEEEEEEEEEEAAGGGGGGGGG
LLLMMMABUUUUUUUUUUUUWWWWWWKKWHHHHHHHHHHHBQQBBBBBCCCCCDDDDDDDDDDBBBBZBBBBBBBBNNNNNOOOOWWWVBBBBBBBBBBBBBBBIIOOOWWWOOOOOOVEEEEEEAEEAAAGGGGGGGGG
LLLMMMAAAUUUUUUUUUUWWWWWWWKKWXHHHHHHHHHBBBBBBBBBCCCCCCCCDDDDDDDBBBBBBBBBBQBBOOONNOOOOWWWWBBBBBBBBBBBBBBIIIOOOWWWWOOOOOOUEEEEAAAEAAAAASSGGGAA
LLMMMAAAUUUUUUUUUUUWWWWWWWKGHHHHHHCCHBBBBBBBBBBBBCCCCCDDDDDDDUDBBBBBBBBBBBBBOOOOOOOOOWUUYBYBBBBBBBBBBBBIVVVVOOOWOOOOOOOUEAAAAAAAAAAAAASSGGAA
LQQQQQAAAUUUUUUUUUUUUUWWKKKKHKKHHHCCBBBBBBBBBBBBBBCCCCDDDDDDDDBBBBBBBBBBBBOOOOOOOOXXOWUUYYYBBBBBBBBBBBAVVVVVOOOOOOOOOOOOOOXXXXAXXAAAAASSSAAA
QQQQAQQAAAUATTTUUUUUUUUUPKKKKKKKHHCKBBBBBBBBBBBBBBBBCCDDDOKKKDBBBBBBBBBBBOOOOOOOOXXXXGUUYYBBBBBBBBBBBAAAAVVVVVOOOOOOOOOOOXXXXXXXAAXAAAAAAAAA
QQQQQQAAAAAATTTTTTTTTHXXXKKKKKKKHRKKBBBBBBBBBBBBBBBCCDDDOOKKKKBBBBBBBBBBBBBOOOXXXXXUUUUUUUBBBBBBBBZBHZAAAAAVVVOOOOOOOOOXXXXXXXXXXAXAAAAAAAAA
QQQQQQAAAAATTTTTTTTTTXXKKKKKKKKKHKKKEEBBBBBBBBBBBBBBBDDDOOKKKKKBXBBBXXBBBBOOOOOXXXXXUUUUUUBBLLLBZZZPZZZAAAAVVVVOOOOOOOOOXXXXXXXXXAXXXAAAAAAA
QQQQQQQAATTTTTTTTTTTTXXXKKXXXKKKKKKKEBBBBBBBBBBBBBBDDNDSDOOOOKKXXXXXXXXVBBOVVVVVVXXXXUUUUUBLLLLZZZZZZZZAAAAAVCVPOOOOOOOXXXXXXXXXXXXXXAAAAAAA
QQQQQQQAAATTTTTTTTXLXXXXXKXXXKKKKKEEEFFBBBBBBBBBBBBDDDDDDOOODKKXXXXXXXXVVVVVVVVVVXXXUUUUUUUZLZZZZZZZZZZZZZAAVPPPPOOOOOGGGXXXXXXXXXXAAAAAWAAA
QQQQQQQAATTTTTTTTXXXXXXXXXXXXKKKKKEEEEEEBBBDBBBBBDDDDDDDDDDDDKKXXXXXXXXVVVVVVVVVVVVXXUUUUUUZZZZZZZZZZZZZZZAAPPPPPOOOOEGGGXXXXXXXXXXXAAAAAAAA
QQQQQQQQQTTTTTTXXXXXXXXXXXXXXXKKEEEEEEEEBBBDDBBMMDDDDDDDDDDDDDKKXXXXXXXVVVVVVVVVVVVXXURUUUUZZZZZZZZZZZZZZZZZPPPPOOOOEEGGGGXXXXXXXXXXAAAAAAAA
QQQQQQQQQQMTTTTXXXXXXXXXXXXXXKKEEEEEEEEEEBBBBBMMMDDDDDDDDDDDDDXXGXXXXXXXVVVVVVVVVVVXXUUUUUUUXXZZZZZZZZZZZZPPPPPPPOOOEEGGGGGXXXXXAHXKAAAAAAAA
QQQQQQQQQQTTTTTXXXXXXXXXXXXXXXXEEEEEEEEEEEBEEBMDMDDDDDDDDDDDDIXXXXXXXZZZVVVVVVVVVVVXXUHUUUUUXXZZZZZZZZZZIZPPPPPPYYOYEEEGGGGGGGXXAHXXAAAAAAAA
QQQQQQQQQQQITTTXXXXXXXXXXXXXEEXEEEEEEEEEEEEEEEDDDDDDDDDDDDDDDIIXXXXXXXXXVVVVVVVVVVXXXUUUUUUUUXXZZZZZZZZZZZPPPPPPYYOYEEEEGGGGGAAAAAANAAAAAAAA
QQQQQQQQQIIITTTTXXXXXXXXXXXEEEEEEEEEEEEEEEEEEEEEDDDDDDDDDDDDDDDDXXXXXXXXXVVVVVVVVVXXXXXXXUXUXXXZZZZZZZZZZZZPPPPPYYYYEEEGGGGGGAAAAAAAAAAAAAAA
QQQQQQQQQIIIIIIIXXXXXXXXXXXXXEEEEEEEEEEEEEEEEEEDDDDDDDDDDDDDDDXXXXXXXXXXVVXVXVVXXVXXXXXXXXXXXXXZZZZZZZZZZZZPPPPPPPYEEEGGGGGGGGGAAAAAAAAAAAAA
QQQQQQQQIIIIIIIXXXXXXXXXXXXXXXEEEEEEEEEEEEEEEEEDDDDDDDDDDDDDDXXXXXXXXXXXXXXXXVXXXVVXXXXXXXXXXXXXZZZZZZZZZZAAPPAAAAEEEEEGGGGGGGGAAAAAAAAAAAAA
QQQQQQQQIIIIIIIXXHXAXXXXXXRXXEEEEEEEEEEEEEEEEEEDCDWDEEDDDDDDDDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZZZZZZZPZAAAAAAAAAAEEEGGGGGGGAAAAAAAAAAAAAAN

View File

@ -43,23 +43,23 @@
(defn mmap
"map map f coll"
[f coll]
(map (partial map f) coll))
[f & colls]
(apply map (partial map f) colls))
(defn mmapv
"mapv mapv f coll"
[f coll]
(mapv (partial mapv f) coll))
[f & colls]
(apply mapv (partial mapv f) colls))
(defn mmmap
"map map map f coll"
[f coll]
(map (partial map (partial map f)) coll))
[f & colls]
(apply map (partial map (partial map f)) colls))
(defn mmmapv
"mapv mapv mapv f coll"
[f coll]
(mapv (partial mapv (partial mapv f)) coll))
[f & colls]
(apply mapv (partial mapv (partial mapv f)) colls))
(defn partition-by-counts [counts coll]
(->> counts
@ -68,3 +68,21 @@
[(conj acc a) b]))
[[] coll])
first))
(defn update-last [v f & args]
(let [idx (dec (count v))]
(apply update v idx f args)))
(defn partition-by-range-gap [sorted-nums]
(:acc (reduce (fn [{acc :acc
a :last}
el]
(if (= el (inc a))
{:acc (update-last acc conj el)
:last el}
{:acc (conj acc [el])
:last el}))
{:acc [[(first sorted-nums)]]
:last (first sorted-nums)}
(rest sorted-nums))))

50
2024/src/day12.clj Normal file
View File

@ -0,0 +1,50 @@
(ns day12
(:require
[clojure.set :as s]
[core :as c]
[input-manager :refer [get-input]]))
(def input (c/map-by-coords (get-input 12)))
(def cardinal-offsets [[0 1] [0 -1] [1 0] [-1 0]])
(defn steps [loc]
(c/mmap + (repeat loc) cardinal-offsets))
(defn steps-that-meet-perimeter [loc]
(let [c (input loc)]
(->> (steps loc)
(filter (comp (partial not= c) input)))))
(defn get-shape [loc]
(let [c (input loc)]
(loop [acc #{loc}
seen #{}
[loc & locs] #{loc}]
(if (nil? loc)
acc
(let [new-locs (->> (steps loc)
(filter #(= (input %) c))
(filter #(not (seen %))))]
(recur
(into acc new-locs)
(conj seen loc)
(into locs new-locs)))))))
(defn get-perimeter-count [shape]
(->> shape
(map (juxt identity steps-that-meet-perimeter))
(filter #(seq (second %)))
(map #(count (second %)))
(reduce +)))
(defn get-ans [get-perimeter-value]
(loop [acc 0
[loc & to-see] (set (keys input))]
(if (nil? loc)
acc
(let [shape (get-shape loc)]
(recur (+ acc (* (count shape)
(get-perimeter-value shape)))
(s/difference (set to-see) (set shape)))))))
;; part 1
(get-ans get-perimeter-count)