heh
bendn 2024-12-13
parent 5763376 · commit 3b02565
-rw-r--r--beeg-basicbin80000000 -> 0 bytes
-rw-r--r--beeg2-larger-basicbin40000000 -> 0 bytes
-rw-r--r--src/inp.txt141
-rw-r--r--src/main.rs81
-rw-r--r--src/util.rs53
5 files changed, 252 insertions, 23 deletions
diff --git a/beeg-basic b/beeg-basic
deleted file mode 100644
index 6e01760..0000000
--- a/beeg-basic
+++ /dev/null
Binary files differ
diff --git a/beeg2-larger-basic b/beeg2-larger-basic
deleted file mode 100644
index 7b4f47a..0000000
--- a/beeg2-larger-basic
+++ /dev/null
Binary files differ
diff --git a/src/inp.txt b/src/inp.txt
index ba75626..aeadace 100644
--- a/src/inp.txt
+++ b/src/inp.txt
@@ -1 +1,140 @@
-4022724 951333 0 21633 5857 97 702 6
+OORRQQQQQDUDDDDDDDDDDDDDDDDDDDYYDDDDPGGGGGGGGGGGNNNNNNNTTTTTTTTTTYYYHKKKKKKKKKKXXXXXXXXXXXXYEEEEEEEEEEEEVVAAAAAAAAAAAAAAAATERREVEEEEEEEEEEEE
+OOORQBQQQDDDDDDDDDDDDDDDDDDDDDDDDDDDDGGGGGGGGGGGGNNNNNNTTTTTTTTTTTTYHKKKKKKKKKKXXXXXXXXXXXEEEEEEEEEEEEEEEEEEAAAAAAAAAAAAAAREEEEEEEEEEEEEEEEE
+OOOOOOOQODDDDDDDDDDDDDDDDDDDDDDDDDDGGGGGGGGGGGGGGNNNNNTTTTTTTTTTTTTHHHKKKKKKKKKKXXXXXXXXXEEEEEEEEEEEEEEEEEEEAAAAAAAAAAAAAARRREEEEEEEEEEEEEEE
+OOOOOOOOOVVDDDDDDDDDDDDDDDDDDYYYYDDGGGGGGGGGGGGGNNNNNNTTTTTTTTTTHHHHHHKKKHHHHKKKXXXXXXXXXXXXEEEEEEEEEEEEEEEEAAAAAAAAAAAAAARREEEEEEEEEEEEEEEE
+OOOOOOOOVVVDDDDDDDDDDDDDDDDDDYYYYYYYGGGGGGGCCCCNNNNNNNNTTUTTTTTTHHHHHKKKKHHHHHXXXXXXXXXXXXXXEREEEEEEEEEEEEEEEAAAAAAAAAAARRRRRREERRREEEEEEEEE
+OOOOOOOODDDDDDDDDDDDDDDLDDDDDBYYYYYYYYYGGCCCCCCCNCCCNNNTDUUUTTTTRHHHHHHHHHHHHHXAAAAAXXXXXSSXXEEEEEEEEEENEEEEAAAAAAAAAAAAAARRRRRRRRRREEEEEEEE
+OOOOOOOWWWWWWWDDDDDDDLLLDFFDBBYYYYYYYYYJCCCCCCCCCCCCNNNIIUUUTTRRRRRHHHHHHHHHHHAAAAAAAXXXSSSSSRREEEEEEEENEEAAAAKKKAAAAAAAAARRRRRRRRRREEEEEEEE
+OOOOOOOOWWWWWDDDDDDLLLLLFFCBBYYYYYYYAAACCCCCCCCCCCCCIINIIUUUKTRRRRRSHXXXHHHHHUAAAAAXXXXXSSSSSREEREEEEEPAAAAKKAKKKAAAAAAARRRRRRRRRRREEEEEEEEE
+OOOOOOWWWWWWWDDDDDDLLLLLFFCCBYYYYYYYACCCCCCCCCCCCCCIIIIIIIKKKKRRRRRRHXXXHHHXAAAAAAAAXXXSFSSSSSQQEEEECEEEVKKKKKKKKKKAAAAARRRRRRRRRRREEEEEEEEJ
+OOOOOWWOOWWWWWDDDDOLILLLFLLCCYYYYYYYACCCCCCCCCCCCCCCIIIIIIIKKRRRRRRNRXXXXXXXXAAAAAAAXSSSSSVVSSQQEEEQCEEVVKKKKKKKKKXAAAAARRRRRRRRRFREEEEEEEEE
+OOOOOOOOJJWWWJIIIDLLLLLLLLLCCCYYYYYYACCCCCCCCCCCCCCIIIIIIIIKKRRRRRRRRRXRXXXXXAAAAAJJJSSSSSVQQQQQQQEQQVVVVKKKKKKKKKKEKRRRRRRRRRRREEEEEEEEEEEE
+OOOOOOOJJJJJJJJIIIIILLLLLLLCCCYYYCCCCUFFCCCCCCCCCCCIIIIIIIIIKRRRRRRRRRRRXXXXXAAAAAASSSSSSSVVVQQQQQQQQVVVVVKKKKKKKKKKKARRRRRRRRRPEEEEEEEEKKKK
+OOJJOOOJJJJJJJIIIIIILLLLLLLLCCCCCCCCUUFUCCCCCCCCPCCIIIIIIIIRRRRRRRRRRXXXXXXXXAARRRSSSSSSSSSSQQQQQQQYQVHVVVVKKKKKKKKKKKKKKRRRRRRPPDDKEKEEKKKK
+OOOJJJJJJJJJJJIIEEEILLLLLLLLLLCCCCCCUUFUCCCCCPCCPPPPIIIIITTTRRRRRRRRRXXXXXXJJJJRRRSSSSSSSSSSEQQQQQQQQVHHHHHKKKKKKKKKTKKKTRRRPPRDDDDKKKKEEKKK
+OOJJJJJJJJJJJJEEEEEEELLLLLLLLLCCCCCUUUUUCCCCCPPPPKIIIIIIIIRRRRRRRRRRRRRRXXJJJJJRRRASSSSSSSSSEQQQQQHHVVHHHHHKKKKKKKKTTKTTTTPPPPDDDDDKKKKKKKKK
+JJJJJJJJJJJJJEEPEEEEPLLLLLLLLLLCCCCCCUCUUSSSKKPKKKIIIIIIIIIJJRRRRRRRRRRXXXJJJJJRRRAASSSSSSSEEQQPQQHHHHHHHHKKKKKKKKTTTJTTTTTPPACDAADKKKKKKKKK
+JJJJJJJJJJJJJEEEEEEEPLLLLLLLLLLCCCCCCCCCKKKKKKKKKKIIIIIIBIIIRRLRRRRRXXXXXXJJJRRRRRRRRRSHHHPPPPPPPHHHHHHHHKKKKKKKKKTTTTTTTTTPPAADAAAKKKKKKKKK
+JJJJJJJJJJJJEEEEEEEEEXLLLLLLCCCCCCCCCCCKKKKKKKKKKKKKIIIIBIIILRLLRRRRXXXXXJJJRRRRRRRRRRSSHHPPPPPPPPHHHHHHHHKKKKKKKKTTTTTTTTTPPAAAAAAKKKKKKKKK
+JJJJJJJJJJEEEEEEEEEEXXLLLLCCCCCCGCCCCCCKKKKKKKKKKKKKKKIIBBILLLLLRRRRPPPPXXJJRRRRRRRRRRSSNNNPPPPPPPPHHHHHHKKKKKKKKKKTTTTTTTTAAAAAAAAKKKKKKKKK
+JJJJJJJJJJJJEEEEEEEEEXXXXCCCCCCCGCEECCCKKKKKKKKKKKKKKKIBBBBBBBRRRRRRRPPPPXXXRRRRRRRRRRSNNNNPPPPPPPPHHHHHKKKKKKKKKKKTTTTTTTTTAAAAAAAKKKKKKKKZ
+JJJJJJJJJJJFEEEEEEEEXXXXXXXCCCCCGEEEECCGGHKKKKKKKKKKKKKBBBBBPPPPPPPPPPPPPPQQRRRRRRRRRRSNNNCCCPPPPPPIILHKKKKKKKKKKTTTTTTTTTTTAAAAAAAJKKKKKKKK
+JJPJJJJJJJJEEEEEEEEEXXXXXXXCCCCCGGEEECGGGHKKKKKKKKKKKKKBBBBBBPPPPPPPPPPPPPQQRRRRRRRRRRVVNNNCCPPPIIIIIIOOKKKKFFKKFTTTTTTTTTTTAAAAAAKKKKKKKKKK
+JPPPPPPPPPJEEGGEEEEEXXXXXCCCCCCGGGGGGGGGGGPKKKKKKKKKKKKKBBPPPPPPPPPPPPPPPBQQRRRRRRRRRRVVNNCCPPPPPIIIIIIIKYKKFFFFFTTTTTTTFTVVVVAAVAKVKKKKKKKK
+PPMPPPPPPPGGGGGGGGGXXXXXXXXCCCCNNGGGGGGGLLPKKKKKKKKKKKKKBPPPPPPPPPPPPPPXXQQQRRRRRRRRRRAZNCCCCPPPCIIIIIIIIIFFZFFFFTTTTTTTTVVVVVVVVVVVKKKKKKKK
+YPPPPPPPGGGGGGGGGGGXXXXXXNNCCCNNNNNGGGGGLAKKKLKKKKKKKKKKBPPPPPPPPPPPPPPXXQQQRRRRQZZZZZZZZCCCPPPCCIIIIIIIIPFFFFFFFFTTTTTTVVVVVVVVVVVVKKKKKKKK
+YPPPPPPPPGGGGGGLLLLLLXXNNNNNNNNNNNNGGGLGLLLKKLKLKOKKKKKKBPPPPPPPPPPPPPXXXQQQRRRRQZZZZZZZZCCCCCPCIIIIIIIIIFPFFFFFFFMTTTTUVVUVVVVVVVVVKKKKKKKK
+PPPPPPPPPGGGOGGGGGLLLXXXNNNNNNNNNNNBGGLLLLLKKLLLKOKKKKKPPPPPPPPPPPPPPPXXXXXQQQQQQQQZZZZZCCCICCCCCIIILLLIRFFFFFFFFFFFFUUUUUUVVVVVVVVVVKFKKKKK
+PPPPPPPPPPOOOOGGGGLLLLXXNNNNNNNNNNNBGULLLLLLLLLKKKKKKKKPPPPPPPPPPPPPPPPXXXXXXQQQQNZZZZZZZCIICCCCCIYILRLRRRRFFFFFFFFFFUUUUUUVWWVVVWVVVKKKKOOO
+PPPPPPPPPPOOOOGGGLLLLLLLNNLNNNNNNNNBNUULLLLLLLLLLLSKKSKKKPPPPFPFPPPPXXXXXXXXQQQQQNNNZCCZEIIICCICCRRLLRRRRRFFFFFFFFFFFUUUUUUUWWWWWWWWVVVKKXOX
+PPPQPPPPPPOOOOGGGLLLLMMLLLLLLLNNNNNNNNUULLLLLLLLLSSSSSKKKPPPPFPFNPPPXXXXXXXXXQQNNNNFCCCIIIIIIIIICRRRRRRRRFFFFFFFFUUUUUUUUUUWWWWWWWWVVVVVVXXX
+PPPPPPPPCWOOOOCGGGLLLLLLLLLLNNNNNNNNNNULLLLLLLLLLLSSSKKSKKPFPFPFFFXXXTXTTTXXXXQFFFFFFCIIIIIIIIIICRRRRRRRRFFFFFYFFUHHHUUUUUUUWWWWWWWXVVVVVXXX
+PPKKPPPPCCCOCCCCCGLLLLLLLLLLLNNNNNNNJCLLLLLLLLLLLSSSSKSSKKKFFFFUFFQQQTXTTTTTTXGFFFFFFCCIIIIIIIITRRRRRRRRRRFFYFYYYYHHHHHHHHHUWWWWWWWXXXXXVXXX
+CPKKCCPPCCCCCCCCCGLLLLLLLLLLLNJNNNNNJCLLLLLLLLLLLSSSSSSSSSFFFFSFFFFQQTTTTTTGGGGGFFFFFCCIIIIIIIITRRRRRRRRRRFYYYYYYYHHHHHHHHHUUWWWWLLXXXXXXXXX
+CCCCCCPCCCCCCCCCCLLLLLSKLLLLJJJJJNNNJJXLLLLLLLLLSSSSSSSSSKKFFFFFFFFTTTTTTTTTTGUGUUFFFFCTTTTTTTTTTRRRRRRRRRRYYYYYYYHHHHHHHHHUUWWWWLLXXXXXXXXX
+CCCCCCPCCCCCCCCAALSSSSSKLLJJJJJJJJJJJJJLDLLLLLLLFFSFSSSSSFFFFFFFFFKTTTTTTTTTTUUUUFFFFFCTTTTTTTTTTRRRRRRRRYYYYYYYYYHHHHHHHHHUUUWDWLLLXXXXXXXX
+CCCCCCCCCCCCCCCCCLSSSSSKKSJJJJJJJJJJJJDDDDOLOCLFFFFFSSESFFFFFFFFFFFFTTTTTTTTHHUUUFFBBBBBBBBBBTTTTRRRRRRYYYYYYYYYYYHHHHHHHHHUUUXULLLLXXXXXXXX
+CCCCCCCCCCCCCCCCSSSSSSSKSSSJJJJJJJJJJJJDDOOOOOVOFFFFSSFFFFFFFFFFFFFTTTTTTTTTTHUUUFFBBBBBBBBBBTSSSRRRRRRBYYYYYYYYYYHHHHHHHHHUUUUULLLLXXXXXXXX
+CCCCCCCCCCCCCCCSSSSSSSSSSSSJJJJJJJJJJJDDDOOOOOOOOFYYYYYYYYYYFFFFFFFOOTTTTTTTTHUUUUFBBBBBBBBBBTSSSSSRRRSYYYYYYYYYYYHHHHHHHHHUUUUUDLLLLXXXXXXX
+CCFCCCCCCCCCCCCSSSSSSSSSSSSSJJJJJJJJJJDDDDOOOOOOOOYYYYYYYYYYYFFFRRRFFFGTTTTTHHHHBBBBBBBBBBBBBYTTSSSSRSSYYYYYYYYYYYHHHHHHHHHUUUUSDLLLLXXXXXXX
+CFFFCFFFCCCCCCCSSSSSSSSSSSSJJWWJWJJJJDDDDOOOOOOOOOYYYYYYYYYYYOOFFRFFFFGTSSTTMHHMBBBBBBBBBBBBBTTSSAASSSSYYYYYYYYYYYHHHHHHHHHUUUSSDLDDDDXXXXXX
+FFFFCFFFFCCCCCCCSSSSSSSSSSZWWWJJWWJJDDDDDDDOOOOOOOYYYYYYYYYYYOOFFRRFFFFFFSSSMMMMBBBBBBBBTFTTTTTTAAASSSYYYYYYYYYYVVYYAAAADUUUUUUDDDDPDDIIXXXX
+FFFFFFFFFCCCCSSCCSSSSSSSSWZWWWJJWWWWWDDDDDOOOOOOOYYYYYYYYYYYYOOFFRFFFFFFFSSSMMMBBBBBBBBBFFTTTAAAAAASAAAAFYYYYYYYVVVVAAAADUUUDDDDDDDDDDDIIXEX
+FFFFFFFFFFFCVSVSSSVSSSSSQWWWWTTJWWWWWDDDDDOOOOOOOOYYYYYYYYYYYOOOFRFFFFFFFFSSMMMBBBBBBBBBQQTATAAAAAAAAAAAFFFFYYYYVVVVAAAAVUTUDDDDDDDDDDDKKEEE
+FFFFFFFFFFFFVVVVVVVVVSSQQWWWWWWWWWWWWWWDDDDOOOOOOOYYYYYYYYYYYOOOOOFFFFFFFLMMMMMBBBBBBBBBQQOAAAAAAAAAAAAAFFFYYYYYVVVVVAVVVUBBBBBDDDDDDDDKZIIE
+FFFFFFFFFFVVVVVVVVVVVVWWWWWWWWWWWWWWWWDDDDEEOOOOOEEYYYYYYYYYYOOOOFFFFFFFFMMMMMMBBBBBBBBBOOOAAAAAAAAAAAAAAFYYYYXYVVVVVVVVVVBBBBDDDDDDDDDKKKII
+FFFWWFWFFVVVVVVVVVVVBWWWWWWWWWWWWWWWWWDDDDEEEEEYYYYYYYYYYYYYYOOOFFFFFFFFMMMMMMMMBBBBBBBBBBBAAAAAAAAAAAAAAYYYYYYVVVVVVVVVVVVVBBBBDDDDDDKKKKII
+FFWWWWWWWWWWVVVVVVVBBWWWWWWWWWWWWWWWWWDDDDEEEEEYYYYYYYYYYYHHTHOOFFFFFFFFMMMMMMMMBBBBBBBBBBBAAAAAAAAAAAVYYYYYYYAVVVVVVVVVVVVVBBBBDDDDDDKKKKII
+FFWWWWWWWWWWVVVVVVVVVWWWWFFWFFWWWWWWWWWXXDEEEEEYYYYYYYYYHHHHHHHFFFFFFFFFMMMMMMMMBBBBBBBBBBBAAAAAAAAAAAVYYYAAYAAVVVVVVVVVVVVVVBBDDDDDDKKKKKII
+FFFWWWWWWWWWVVVVVVVVQQQQWFFFFWWWWWWWXWXXXDEEEEEEEEEYYYEEHHHHHHAFFFFFFFFFLMMMMMKKBBBBBBBBBBBAAAAAAAAAAAVVYYYAAAAJVJVVVVVVVVVVVDDDDDDIIKKKKKII
+FFFFWWWWWWWWWVWWWWVVQQQQQQFFFFFWWWWXXXXXXXXEEEEEEELYYYHHHHHHHHHGHHFFLFFFLLLLMMKKBBBBBBBBBBBAAAAAAAAAAAAAYYYYAAJJJJJCVVVVVVVOODDDDDDIIIIIKKII
+FFFFFWWWWWWWWWWWWWQQQQQQQQFFFFWWWWWXXXXXEXEEEEEEEELYYYHHHHHHHHHGHHHFLLLLLLLLLKKKKKKKKBBBBBBAAAAAAAAAAAAYYYYYAAJJJJJJVVJVVVVOOODDDDIIIIIIIIII
+FFFFFWWWWWWWWWWWQQQQQQQQQQFFFFWJWPXXXXXXEEEEEEEEEEEYYYHHHHHHHHHHHLLLLLLLLLLLLKKKKKKKKBBBBBBAAAAAAAAAAAYYYYYYAAJJJJJJJJJOOOOOOODDDIIIIIIIIIII
+FFFFFWWWWWWWWWWWQQQQQQQQQQFFFFPPPPXXXXXXEEEEEEEEEEEYYYHHHHHHHHHHHLLLLLLLLLLLLLAKKKKKKBBBBBBQQAYYYAAYAYYYYYYYYAAAJJJJJJJJJOOOOODDOIOIIIIIIIII
+FFFWWWWWWWWWWWWWQQQQQSQQQFFPPPPPPPPXXXXXXXEEEEEEHHHHHHHHHHHHHHHHHLLLLLLLLLLLLLLUKKKKKBBBBBBQQQYYYYAYYYYYYYYYCYTTTJJJJJJJJOOOOOOOOOOIIIIIIIII
+FFFFFWWWWWWWWWWWWWSQVQQQQQFFFPPPPPXXXXXXXXEEEEEEHHHHHHHHHHHHHHHLLLLLLLLLLLLLLLUUUUKKKBBBBBBQQQYYYYYYYYYYYYYTTTTTTJJJJJJJOOOOOOOOOIIIIIIIIIII
+FFFFFFWWWWGWWWWWWWQQKKQQQFFFFFPPPMXXXSXXSSSSEEEEEHHHHHHHHHHHHHHHHLLLLLLLLLLLLLUUKKKKKKKKBBBQQQQQYYYYYYYYYYYTTTTTTTTTJJJJJOOOOOOOOOIIIIIIIIII
+FFFFFFWWWWGWWWWWWKKKKKKQFFFFFFPSSSSXXSXSSSSCEECEEHHHHKHHHHHHNHKHHLLLLLLLLLLUUUUKKKMKKKKQBBBQQQQYYYYYYYYYYYYTTTTTTTTTJJJJJJOOOOOOOOIIIIIIIIII
+FFFFFFFWWWWWWWWWKKKKKKKKKKFFFFFSSSSSSSSSSSCCQCCCCHHHHKKKKJKKKKKEEELLLLLLLLUUUUUQKQQQQQQQBBBQQQQYYYYYYYYYYYYTTTTTTTTTJJJJJJJOJJZZOOIIIIIIIIII
+FFFFFFFSSWWWKKKKKKKKKKKKKFFFFFSSSSSSSSSSSCCCCCCCCHHKKKKKKKKKKKKKKEELLLDLLLLUUUQQQQQQQQQQBBBQQQQQYYYYYYYYYJJTTTTTTTTTJJJJJJJJJJZZZZZIIIIIIIII
+FFFFFTFSSSSSSKKKKKKKKKKDKFFFFFSSSSSSSSSSSSCCCCCCCCCCCKKKKKKKKKKKKEELLDDDZLZUUUQQQQQQQQQQBBBAQQQQYYYYYYYYYJTTTTTTTTTTJJJJJJJJJJJZZHFIIIIIIIII
+FFFFFFFQSSSSSKKKKKKKKKKKFFFFFSSSSSSSSSSSSSCCCCCCCCCCKKKKKKKKKKKKKEEEEZDDZZZUQQQQQQQQQQQQBBBAAAAQYYYYYYYYYJTTTTTTTTTTJJJJLJJJVVVZZHFFFIIIIIII
+FFFFFFFQQSSSSKKKKKKKKKFFFFFFFFSSSSSSSSSSSSCCCCCCCCCNKKKKKKKKKKKKKEEEEZZZZZUUQQQQQQQQQQQQBBBAAAAAYYYYYYYNJJTTTTTTTTTTJJJJJVJVVFFFFFFFYYIIIIIC
+FFFFFFFQQQQSSSSKKKKKKKFFFFFFFFFFSSSSSSSSSSSCCCCCCCNNKKKKKKKKKKKKKKKEEZZZZZUZJQQQQQQQQQQQBBBAAAAAAYAAAYJJJJTTTTTTTTTTJJJJJVJVVFFFFFYYYYIIIIIC
+FFFFFFFQQQQSSSSSSKKKKKKFFFFFFFSSSSSSSSSSSSCCCNCCCNNNKKKKKKKKKKKKKKKEZZZZZZZZZQQQQQQQQQQQBBBAAAAAAAAAAYFFJJTTTTTTTTTTVVVVJVVVFFFFYYYYYYIIICCC
+FFFFFQQQQQQQQSSSKKKKKKFFFFFFFFFFFSSSSSSSSSSCCNCCCCNNKKKKKKKKKKKKKKKKKZZZZZZZZZAAQQQAAAQYAAAAAAAAAAAAAYFFFJTTTTTTTTTTJVVVJVVVFFFFFYYYYYYYYCCC
+FFQQQQQQQQQQQSSSKEKKKKKFFFFFFFFFCSSSSSSSSSSCCCPCPMNNKKKKKKKKKKKKKLKNNZZZZZZZZZAAAAAAAQQYAAAAAAAAAAAAAFFJJJTTTTTTTSSHHVVVVVVFFFFFYYYYYYYCCCCC
+QQQQQQQQQQQQQVVVKKKKVKKFFFFFFFFFCYSSSSSSSSSSPPPPPMMMMKKKKKKKKKKKLLZZZZZZZZZZZZAAAAAAAAAAAAAAAAAAAAAAAFFJJJTTTTTTTHHHHVVVVVFFFFFFFYYYYYYYCCCC
+QQQQQQQQQQQQVVVVVVVVVVVVVVFFFFFFYYSSSSSSSSSSPPPPPMMMMMMMKKKKKKILLLLZZZZZZZZZZAAAAAAAAAAAAAAAAAAAAAAFFFJJJJTTTTTTTHHHHVVLVVVFFFFFFYYYYYYYCYCC
+QQQQQQQQQQQQQQVVVVVVVVVVVTFFFFFFYYYVSYYYYYYPPPPMMMMMMMMMKKIIIIIJLLLZZZZZZZZZZZAAAAAAAAAAAAAAAAAAAAAAAAAJJJTTTTTTTJYHMLLLLLLLSFOFPPYYYYYYYYOC
+QQQQQQQQQQQQQQVVVVVVVVVVVAFFFFFYYYYYYYYYYYYYPPPMMMMMMMMMMIIIIIIIGGLLZZZZZZZZZFFFFAAAAAAAAAAAOOAAAAAAAAYYJJYYYYJJJJYLLLLLLLLLSSCCCPPPYYYVVVOO
+QQQQQQQQQQQQQQVVVVVVVVUVVAFFSFFYYYYYYYYYYYPPPPPPMMMMMMMMIIIIIIIIILLLAZZZZZZZZFFFFFFFAAAAAAAOOOOAAAAAAYYYJJYYYYYJJYYYYLLLLLLLSCVCECPPPOVVVOOM
+QQQQQQQQQQQQQXVVVVVVVVUVAAAAAFRYYYYYYYYYYYPPPPPPMMMMMMMMIIIIIIIIIALAAZZZZZFSFFFFFFFAAAAEEAAOOOOOOAAAAAAAWWYYYYYYYYYLLLLLLLLSSCCCCCCPPOOOOOOO
+QQQQQQQQQQQXXXXVVVVVVVVXAAAAAYYYYYYYYYYYYPPPPPPPMMMMMMMMIIIIIIIIIALAAAAZFZFFFFFFFFFFAANEENROOOOOOOAAKAAAYYYYYYYYYYYYLLLLLLGGCCCCCCCPPOOOOOOO
+QQQQQQQQQXQXXXVVVVVVVVXXAAAAAYYYYYYYYYYYPPPPPPPPPPMMMMMMMIIIIIIIIAAAAAFFFFFFFFFFFFFFAANNENNNLOOOOOOKKYYAYYYYYYYYYYYYYYLLLLGGGCCCCCCPOOOOOOOO
+XXQQQQQQQXXXXVVVVVVVVVXXXAUAJJYYYYYYYYYYYPPPJPPPPPMMMMMMMIIIIIIAAAAAAAAFFFFFFFFFFFFFNNNEENNNNOOOORRKKYYYYYYYYYYYYYYYYYLLLLGGGGSCCCCOOOOOOOOO
+XXXQQQXQQXXXXVVVVVEEEEXXXAUJJJJYYJYYYYYYPPPJJJJPPPMMMMMMMMIIIIIAARRAAAFFFFFFFFFFFFFFNNNNNNNNOROOOORRKKYYYYYYYYYYYYYYYYYLLAGGGASSSCOOOOOOOOOO
+XXXQXXXXXXXXXXVVVVVVEUUUUXUJJUJJJJJJYYYYYJJJJJJJPPMMMMMMMIIAAIIAARRRAAAFFFFFFFFFFFFNNNNNNNNOOOOOOORRRKKYYYYYYYYYYYYYYLLLLAAAAAAOOHHOOOOOOOOO
+XXXXXXXXXXXXXDZZZDVVEUUUUUUUUUJJJJJJJYYYYJJJJJJJPPPPMMSMMMAAAAAAARRAAAFFFFFFFFFFFFNNNNNNNNNOOOOZZORRRRRRRNNNNYYYYYYYLLLLAAAAAAAOOOOOOOOOOOOO
+XXXXXXXXXDDDDDZZZDDDEEUUUUUUUJJJJJJJYYYYJJJJJJJJPPPPMMMAAAAAARRRRRRRRAAAFFFFFFFFFBBNNNNNNNNONBRZRRRRRRRRRRRNYYYYDYYDLLLAGAAAAAAAAAAOOOOOOOOO
+XXXXXXXXXDXDDDDZZDDDEEEUUUUUUUJJJJJJJJJYYJJJJJJJPPPPAAAAAAAAAAARRRRRRRARRRFFFFFBBBBNNNNNNNNNNRRRRRRRRRRRRRRRRDDDDDDDAAAAAAAAAAAAAAABOOOOOOOO
+XXXXXXXXXXXDDDDDZDDDEEEUUUUUUUJJUJJJJJJJJJJJJJPPPPPPAPAAAAAAAARRRRRRRRRRKRRFFFFXBBXXNNNNNNNNRRRRRRRRRRRRRRRRRDDDDDDDBBAAAAAAAAAAAABBOOOOOOOX
+XXXXXXXXXXDDDDDDDDDDEEDZUUUUUUJJUJJJJJPJJJJJJJJPQPPPPPAAAAAAAAHRRRRRRRRRKRRFFFXXXXXXXNNNNNNNNNLRRRRRRRRRRRRDDDDDDDADDBBBAAAAAAAAAAAOOHOOLLOO
+XXXXXXXXXXDDDDDDDDDDDDDDUUUUUUUUUJJPJPPJJJJJJJPPQQQPPOOOAAAARRRRRRRRRRRRRRRRXXXXXXXXXXXXXXXXXXRRRRRRRRRRRRDDDDDDDDDBBBBBBBAAAAAAAAAAOOOLLLZO
+XXXXXXXXXXDDDDDDDDDDDDDDEEEEUJUUJJJPPDPPJJJPJPPQQQQPPOOOOAATRRRRRRRRRRRRRRRRXXXRXXXXXXXXXXXXXXRRRRRRRRRRRRLRDDDDDDBBBBDDBAAAAAAAAAAAALLLLLZZ
+XXXXXSXSXXDDDDDDDDDDDDDDEEEEEEEEEEEEPPPPPPPPPPPQQQQQQWOOOAAARTRRRRRRRRRRRRRRRRRRXXXXXXXXXXXXXXBRRRRRRRRRRRLRRDDDDDBBBBDDAAAAAAAAAUAARLLLLLZZ
+XXXSSSSSSSWDDDDDDDDDDDDDEEEEEEEEEEEEPPPPPPPPPPPQQQQQQQQOORAAARRRRRRRRRRRRRRRRRRRXXXXXXXXXXXXXXRRRRRRRRRRWRRRKDDBDBBDBDDDDDAAAAAAAAAAALLLLZZZ
+XXXSSSSSSSDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEPPPPPQQQQQQQQQQORRAARRRYRRRRRHHHHHRRRRRXXXXXXXXXXXXXXTRRRRRRRXRWRRVVVBBBBBDDDDDDDDDAAAAAAABLLLLZZZZ
+XXXXSSSSSSSSDDDDDDDDDDDDEEEEEEEEEEEEEEEEEPPTTTQQQQQQQQQQORRAAAARYRRRHHHHHHHHHXRRXXXXXXXXXXXXXXTVRVRRVRVVWVVVVYYYBBBDDDDDDDDDDAAAAAABLLLZZZZZ
+EEEEESESSSSSDDDYDDDDDDDDDDEEEEEEEEEEEEEEEPTTTTQQQQQQQQQOORRAAAARRRRRHHHHHHHHHHRRRXXXXXRXXXXXXXTVVVVVVVVVVVVVVYYYBBBDDDDDDDDDDADAJAAJJZZZZZZZ
+EEWEESESSSSSSCDDDDDDDYZZDDJEEEEEEEEEPPPPPPHTTTTQQQQQQQQOOORAAAARRRPHHHHHHHHHHHRRRRRRRRXXXXXXXXVVVVVVVVVVVVVVYYYYBBBDDDDDDDDDDDDJJJJJJZZZZZZZ
+EEEEEEEESSSSSCCDDQYYYYYZZZZEEEEEEEEEPPPPPHPTTTTMQKQQQIQQOOOAAAARPHHHHHHHHHHHHHRRRRRRRRXXXXXXXXVVVVVVVVVIIVIIYBBYBBBBBDDDDDDDDDDDJJJJJJJZZZZZ
+EEEEEEEESSSSSSCDDDIYYYZZZZZEEEEEEEEEPPPPPPPPTTTMQRRRXIBOOOOOOOORPPHHHHHHHHHHHHRRRRRRRRXXXXXXXXVVVVVVVVIIIIIIIBBBBBBBBOODDDDDDDJJJJJJJJZZZZZZ
+EEEEEEEESJSSSJJJJDDYYYZLZZZEEEEEEEEEPPPPPPPXTTTTQRRIIIOOOOOPPPOOPHHHHHHHHHHHHHRRRRRRRRXXXXKKVVVVVVVVIIIIIIIIBBBBOBBBBOOODDDDDDJJJJJJJZZZZZPP
+EEEEEEEEEJSSJJJJJJHYYPZZZZTEEEEEEEEEPPPPPPPXRRBRRRRRIIIIOODTTPPPPHHHHHHHHHHHHHRRRRRRRRXXXXXKKVVVVVVVVIIIIIIIIIBOOOOOOOOOODDDGDJJJJJJJZZZZPPP
+EEEEEEEEEJJJJJJJJJYYYYZZZZZTTTTEEEPPCCCRRPPPRRRRRRRRIIIITTTTCTTPPHHHHHHHHHUUMMUUUKKKKXXXXXKKVVVVVVVVVVIIIIIIIIICOOOOOODDDDDDGRRRJJJJJJPPPPPP
+PEEEEAEEEJJJJJJJJJYYTTZZZZZZTTTEEEPPCCRRRPRRRRRRRRRRIIITTTTTTTTPPHHHHHHHHHUUUUUUUUUKXXXXXKKKKVVVVVVIIIIIIIIIIIIIOOOOOOODDDDGGARRJJJJJJPPPPPP
+PEEEEAAXXJJXJJJJJJJJTZZZZZZZZZTEEEECCCCARRRRRRRRRRRRIIITTTTTTTTTPHHHHHHHHHUDDUUUUUKKKXXXKKKKVVVVVVVIIIIIIIIIIIIOOOOOOOOOODDGGARRJRRJPPPPPPPP
+PPEEEEEXIXXXJJJJNNNJJZZZZZZZEEEEEEEECCCARRRRRRRRRRRRIIIITTTTTTTTPPPTTTHHHHDDDUUUUUUKKKKKKHHHHHHHVVVIIIIIIIIIIIOOOOOOOOOOODDGGGRRRRRJPPPPPPPP
+PEEEEEXXXXXXJNNNNNNZZZZZZZZEEEEEEEEEAACARRRRRRRRRRNNIIIIITTTTTTPPPPPTTTHHDDDDUUUUUKKKKKKKKHHHHHHHHVIIIGICIIIOOOOOOOOOOOOODDCRRRRRRRJPPPPPPPP
+PXXXXXXXXXYYNNNNNNNZZZZZZZEEEEEEEEEEAAAAAARRRRRRRNNNIIIIITTTTTTPPPPTTTTHHDDDDDUUUKKKKKKKKHHHHHHHWWWWWCCCCCIIIOOOOOOOOOOODDDDRRRRRRRRRPPPPPPP
+PXXXXXXXXXYYYNNNNNNNZZZZZZEEEEEEEEEAAAAAARRRRRRRNNNNIIIIITTTTTTPPPPTTTTHHHDDDDUUUKKKKKKKKKHHHHHHHCCCCCCCCCIOOOOOOOOOOOOOODDDRRRRRRRRRLPPPPPP
+PXXXXXXXXYYXNNNNNNNNZZZZZZZEEEEAEEAAAAAAAAARRRRRNNNNNIIIAATTCTTPPPTTTTTHHDDDDDKKKKDKKKKKKHHHHHHHHCCCCCCCCCCCCOOOOOOOOOOOOOOOOORRRRRLLLLPPPPP
+PXXXXXXXXXXXXNNNNNNNZZZZZZZEEEAAEAAAAAAAARRRRRRRNNNNNIIIAAAACCYCCCCCCTTTDDDDDDDKKDDDKKKHHHHHHHHHHICCCCCCCCCCCCCOOOOOOOOOOOOOOORRRRRRRPPPPPPP
+XXXXXXXXXXXXXNNNNNNNZZZZZZZZZAAAAAAEEEAAAARRRRRRNNNNNNAAAAACCCCCCCCCCTTTDDDDDKKKKDDDKKKKHHHHHHHHHICCCCUCCCCCCCCCOOOOOOOOOOOOOOORRRRROPPPPPPP
+XKXXXXXXXXXXXXNNNNNNCCZQZZRRRAAAAEAEEEAAARRRRRRNNNNNNNAAAAACCCCCCCCCCTTFDDDDDDKKKDDDDKHHHHHHHHHHHHQCCCUUCCCCCCCCOOOOOOOQOOOOOOORROOOOPPPPPPP
+KKKKXXXXXXXXXXNNNNLCCCCCZCRRRRAAAEEEEEARRRRRRRRNNHNNNNAAAAAACCCCCCCCTTFFFDDDDKKKKDDDDDDDHHHHHHHHHHHRUUUUUCCCCCCCCOOOJOOOOOOOOOOOOOOOPPPPPPPP
+KKKKXXXXXXXDXNNNNNLCCCCCCCRRRREEEEEEEEERRRRRKRRRRRNNNNAOAAACCCCCCCCCTTFFFFDDDDDDDDDDDDDHHHHHHHHHHHHRRUUUUUUCCCCCCCOOJJOOOMOOOOOOOOOOOPPPPPPP
+KKKKKXXXXXXXXCCLLLLLCCCCCCIRRRREEEEEEEEEKKKKKRRRRKAAAAAOOOOOCCFFCCCCTTFFZZVVDVVDDDDDDDDHHHHHHHHHHHHHRJUUUCCCCNNCCCCCCJOOMMMOOOOOOOOOOPPPPPPP
+KKKKKXXXXXXAXXCCLCLCCCCCCIIRRRRREEEEEEEEIKKKKKKKRKAAOOOOOOOOCCOFCCCCZTTZZZVVVVVVDDDDDDHHHHHHHHHHHHJJJJUUUUCCNUNNNCCCCJJMMMMOOOOOOWWOOPYYPPPP
+KKKKKKXXXXAAXXCCLCCCCCCCCCIQRRRREEEEEEIIIKKKKKKKKKAAOOOOOOOOOCOFCZZCZZZZZVVVVDDDDDDDDDDHHHHHHHWWEHJJJJJUUNNNNNNNNNGCJJMMMMMMMMWWWWWWWPPPPWPW
+KKKKKKKKKKKAAXCCCCCCCCCCCCIQQRRREEEEEEEIIIKKKKKKKAAOOOOOOOOOOOOOCZZZZZZZZZVVVVDDDDDDDDDDDHHHEEEEEJJJJJJJNNNNNNNNNNNJJJMMMMMMMMWWWWWWWWWWWWWW
+KKKKKKKKKKCCCCCCCCCCCCCCCCCQHHHHEEEEEEIIIKKKKKKKAAKOOOOOOOOOOOOOOZZZZZZZZZZVVDDDDDDDDDDDDHHHHEEEJJJJJJJJYYYYFNNNNNNNJJMMMMMMMMWWWWWDWWTTTTTW
+KKKKKKKKCCCCCCCCCCCCCCCCCCCQQQHHHEEEEEIKKKKKKKKKKKKKOOOOOOOOOOOOOZZZZZZZZZZVVDDDDDDDDDDDDDDDEEEJJJJJJJJJYYYMIINNNNJJJMMMMMMMMWWWWWDDWWWWWTTT
+KKKKKKVKCCCCCCCCCCCCCCKKCCMQQQHHHEEEEEKIKKKKKKKKKKKKOOOOOOOOOOOOOZZZZZZZZZVVVVDDDDDDDDLLDDDEEEEEJJJJJJJJYYYYIIINNNNNIIMMMMMMMWWWWWDDDDTTTTTT
+KKKKKVVVPPCBCBBBCBBBBBBBBPQQQQHHHHKKEKKIKKKKKKKKKKKKOOOOOOOOOOOOOZZZZZZZZZVVVVDDDDDDDDLLDDDDEEEEEEEEJYJJYYYYIIINNNNNIIIIMMMMWWWWWWWDDCTTTTTT
+KKKKKVVVVVVBBBBBBBBBBBBBBPQQQQQHHKKKKKKKKKKKKKKKKKKKKOOOOOOOOOOAOOZZZZZZZZZVVVDDDDLLLLLLDDDDEEEEEEEEYYJJYYYYYIIIINNIIIIIMMMMMTWWWWWWTTTTTTTT
+KKKKVVVVVVBBBBBBBBBBBBBBBBQQQQQQHHKKKKKKKKKKKKKKKKKKOOOOOOOOOOJOOOZZZZZIZZIIIVDDDLLLLLLEEEEEEEEEEEEYYYYJYYYYIIIIIIIIIIITMTMMMTWWWWWTTTTTTTTT
+KKKKVVVVVVVBBBBBBBBBBBBBBQQQQQQHHHKKKKKKKKKWWKKKKKKKOOOOOOOOOOOOZZZZZZZIIIIIIIDDDLLLLLLLLEEEEEEEEEEYYYYYYYYYYIIIIIIIQIITTTTTTTWWWTTTTTTTTTTT
+KKKKVVVVVVVBBBBBBBBBBBBBBBQQQQQQHHKKKKKKKWWWWWKKYKKOOOOPOOOOOOOOOOZZZZZIIIIIIIIDDLLLLLLLLLEEEEEEEEEYYYYYYYYYIIIIIIITTTTTTTTTTTTTWTTTTTTTTTTT
+KKKKKVVVVXVVLBBBBBBBBBBBBBBQQQQLLLKKKKKKWWWWWWKKYOOOOOOPPPPOOOOOOZZZZZZIIIIIIIIILLLLLLLLLLLEYYEYYYYYYYYYYYYIIIIIIITTTTTTTTTTTTTTTTTTTTTTTTTT
+KKKKKKKKVLLLLBBBBBBBBBBBBBQQTTQLLLKKKKKKWWWWIIIOOOOOOOPPPPPPPPPOOZZZZZZIIIIIIIIIIILLLLLLLLDDDYYYYYYYYYYYYYTPPIIIIITTTTTTTTTTTTTRRTTTTTTTTTTT
+KKKKKKLLLLLLLBBBBBBBBBBBBBBBTTTLLLLKZKRKOOWIIIIIOOOOOPPPPPPPPOOOOOZZZZZIIIIIIIIIIILLLLLLLLDDDFYYYYYYYYYYYYTPPNIIINTETATTTTTTTTRRRRRRTTTTTTTT
+KKKKKKKLRLLLLJBBBBBBBBBBBBGLLLLLLLLLLVKKOOOIIIIOOOOOOOOOPPPPPPPOPZZZZZZIIIIIIIIIILLLLLLLLLLDDFYYYYYYYYYYYYPPPNNNNNTTTTTTTTTTTTRRRRRRLLTTTTTT
+KKKKKKKLLLLBBBBBBBBBBBBBBGGLLLLLLLLLLVKKOOOIOOOOOOOOOOPPPPPPPPPPPZZZZZIIIIIIIIIIILLLLLLLLLDDDDKKYYYYYYYYYYPPNNNNNNNNTTTCCTCTPRRRRRRRLPTTTTTV
+KKKKKKLLLELLBLLLBBBBEBBBBBBLLLLLLLLLLVVOOYOOOOOOOOOOOPPPPPPPPPPZZZZZZZZIIIIIIIIIILLLLULLLLLDDDKKYYYYYYYYYPPPNNNNNNNNCCCCCCCPPRRRRRRLLITIIVVV
+KKKKKLLLLLLLLLLLLLCBBBBBCCBLLLLLLLLLLVYYYYOOOOOOOOOOOPPPPPPPPPPZZZZZZZZIIIIIIIIIZLJLULLLLLGGDDKKKYYYYYYPPPPPNONNNNNNCCCCCCCPPPRPPRRLLIIIIVVV
+KKKKKKKLLLLLLLLLLLCCCCCBCCLLLLLLLLLLLVYYYYYYOYOOOOOOOOWWPPPPPPPPZZZZZZZIIIIIIIZIZLJLULLLLLGGGDDDPPYYYYYYPPPNNNNNNNNNCCCCCCCCPPPPPRRRRRIVVVVV
+KKKKKKKLDLLLLLLLLYCCCCCBCLLLLLLLLLLVVVYYYYYYYYYOOOOOOOWWPWPWPPHPPZPZZZZIIZZZIIZIZZEEEQQQQQGGGDDDGPPPYYPPPPNJNNNNNNNNNCCCCCCCCCPPPRRRRRVVVVVV
+KKKKKKDNDLLLLLLLLYCCCCCCCCCPPDDLLLLVVVYYYYYYYYOOOOOOOOWWWWWWHHHPPPPHHHZZZZZZZIZZZEEEEEQQQQQGGDGGGPPPPPPPPPNNNNNNNNNNCCCCCCCCCPPPPRRRVRVVVVVV
+KKKKKKDDDDDDLLLLYYYYCCCCCCCPPDPSSPVVVVYYYYYYYYOWOOOWWWWWWWWHHHHHHHHHHZZZZZZZZIZZZEEEEEQQQQQQGGGNNPNNPPPPPPPNNVNNCCCNCCCCICCCINPPPRRVVVVVVVVV
+DKKKKKDDDDDDTLLYYYYYYCCCCCCPPPPPSPPVVVYYYYYYYYWWOOWWWWWWWWHHHHHHHHHHFZZZZZZZZZZZEEEEQQQQQQQQQGNNNNNNPPPPPPPPVVVWCCCNCCCIIIIIINPPPRRIIIVVVVVV
+DDDDDDDDDDDTTLLYYYYYYCYCCCPPPPPPPPVVVVYYYYYYYYWWWWWWWWWWWWHHHHHHHHHHFZFZZZZZZZZZEEEEQQQQQQQQQGNNNNNNNNPPPLPPPVVWWCNNCCCIIIIIIPPPPRIIYVVVVVVV
+DDDDDDDDDDDTTLLTTYYYYYYYCPPPPPPPVPPVVYYYYYYYYYYWWWWWWWWWWHHHHHHHHHHFFFFFZZZZZEEEEEEEQQQQQBGGNNNNNNNNNNNPPWWWWWWWWCCCCHHIIIIIIIIPIIIIIVVVVVVV
+DDDDDDDDDDDDTTTTTTYTTTYYCCPPPPPPVVVVYYGYYYYYYYYWWWWWWWWWWWHHHHHHHHFFFFFFZZZZZEEEEEEEEQQBBBGGGNNNNNNNNNNNNNWWWWWWWCCCCCHHIIIIIIIIIIIIIIVVVVVV
+KKDDDDDDDDDDTTTTTTTTTTTTCCCPPPPPVVVVVYYYYYYYYYWWWWWWWWWWWHHHHHHHHHFFFFFFFZZZZEEEEEEEQQQBBBBBGBBNNNNNNNNNNNWWWWWWWWWWHHHHHIIIIIIIIIIILLLVVLVL
+KKDDDDDDDDTTTTTTTTTTTTTTCCCPPPPVVVVVYYYYYYYYYYWWWWWWWWWWWWHHHHHHHFFFFFFFFFFZZEEEEEEBQQQBBBBBBBBBNNNNNNNNNNWWWWWWWWWMHHHHHIIIIIIIIIIILLLLLLVL
+KKKDDDDDHDTTTTTTTTTTTTTCCCPPPPPPPPVYYYYYYYYYYYWWWWWWWWWWWWHHHHHHHHQQFFFFFFFZZEEZEEBBQQQQBBBBBBBBBBNNNNNNNNWWWWWWWWWWHHHHHIIIIIIIIIIILLLLLLVL
+KKKDDDDDDTTTTTTTTTTTTTTCCPPPPPPPPCYYYYYYYYYYRYWWWWWWWWWWWWHHHHHHHHQFFFFFFFFFZZZZZERBBBBBBBBBBBBBBBBBNNNWWWWWWWWWWWWWWHHNIIIIIIIIIIIICLLLLLLL
+KKDDDDDDDTTTTTTTTTTTTTTTCCCPPPPPPCYLLYYLYYYRRWWWWWWWWWWWHHHHHHHHHHHHFGFFZZFFZZZEEEEEBBBBBBBBBBBBBBNNNNWWWWWWWWWWWWWNNNHNIIIIIIIIIIIICCLLLLLL
+KKKKDDDDTTTTTTTTTTTTTTTCCCCCPPPPPYYYLLLLLYYRRRRRWWWTTWWWWQQHHHHHHHHHHHHFZZZZZZZEQEEEBXBBBBBBBBBBBBNNNNNWWWWWWWWWWWWWNNNNIIIIIIIIIIIICCLLLLLL
diff --git a/src/main.rs b/src/main.rs
index 44991c7..3095717 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -33,29 +33,67 @@
)]
extern crate test;
pub mod util;
-use std::sync::OnceLock;
-
pub use util::prelude::*;
+const SIZE: usize = 140;
-#[no_mangle]
-pub unsafe fn p1(i: &str) -> impl Display {
- let i = i.as_bytes().trim_ascii_end();
- let mut o = [0u32; 8];
- const LUT: [u32; 10000000] = unsafe {
- std::mem::transmute::<[u8; 10000000 * 4], _>(*include_bytes!("../beeg2-larger-basic"))
- };
- reading::κ(i, &mut o);
- o.into_iter().map(|stone| C!{ LUT[stone as usize] }).sum::<u32>()
+fn explore(
+ (x, y): (usize, usize),
+ handled: &mut [[bool; 140]; 140],
+ char: u8,
+ get: &mut impl FnMut(usize, usize) -> Option<u8>,
+ tot: &mut u32,
+ count: &mut u32,
+) {
+ if get(x, y) == Some(char) && handled[y][x] == false {
+ handled[y][x] = true;
+ // αbβ
+ // a.c
+ // γdδ
+ let α = get(x.wrapping_sub(1), y.wrapping_sub(1)) != Some(char);
+ let β = get(x.wrapping_add(1), y.wrapping_sub(1)) != Some(char);
+ let γ = get(x.wrapping_sub(1), y.wrapping_add(1)) != Some(char);
+ let δ = get(x.wrapping_add(1), y.wrapping_add(1)) != Some(char);
+
+ let a = get(x.wrapping_sub(1), y) != Some(char);
+ let b = get(x, y.wrapping_sub(1)) != Some(char);
+ let c = get(x.wrapping_add(1), y) != Some(char);
+ let d = get(x, y.wrapping_add(1)) != Some(char);
+ fn u(a: bool) -> u32 {
+ a as u32
+ }
+ // *tot += u(a) + u(b) + u(c) + u(d);
+
+ *tot += u(a & b) + u(b & c) + u(c & d) + u(a & d);
+ *tot += u(!a & !b & α) + u(!b & !c & β) + u(!c & !d & δ) + u(!a & !d & γ);
+ *count += 1;
+
+ explore((x.wrapping_sub(1), y), handled, char, get, tot, count);
+ explore((x + 1, y), handled, char, get, tot, count);
+ explore((x, y + 1), handled, char, get, tot, count);
+ explore((x, y.wrapping_sub(1)), handled, char, get, tot, count);
+ }
}
#[no_mangle]
-pub unsafe fn p2(i: &str) -> impl Display {
- let i = i.as_bytes().trim_ascii_end();
- let mut o = [0u64; 8];
- const LUT: [u64; 10000000] =
- unsafe { std::mem::transmute::<[u8; 10000000 * 8], _>(*include_bytes!("../beeg-basic")) };
- reading::κ(i, &mut o);
- o.into_iter().map(|stone| C! { LUT[stone as usize] }).sum::<u64>()
+pub fn run(i: &str) -> impl Display {
+ let grid = unsafe { i.as_bytes().as_chunks_unchecked::<{ SIZE + 1 }>() };
+ let handled = &mut [[false; SIZE]; SIZE];
+ let mut get = |x: usize, y: usize| {
+ unsafe { core::hint::assert_unchecked(grid.len() == SIZE) };
+ (x < SIZE && y < SIZE).then(|| grid[y][x])
+ };
+ (0..SIZE)
+ .flat_map(move |y| (0..SIZE).map(move |x| (x, y)))
+ .filter_map(|(x, y)| {
+ let mut sides = 0;
+ let mut area = 0;
+ (!handled[y][x]).then(|| {
+ let char = C! { grid[y][x]};
+ explore((x, y), handled, char, &mut get, &mut sides, &mut area);
+ area * sides
+ })
+ })
+ .sum::<u32>()
}
fn main() {
@@ -66,13 +104,12 @@ fn main() {
// s.push_str(i);i
// }
// std::fs::write("src/inp.txt", s);
- println!("{}", unsafe { p1(i) });
- println!("{}", unsafe { p2(i) });
- // println!("{}", p1(i));
+ #[allow(unused_unsafe)]
+ println!("{}", unsafe { run(i) });
}
#[bench]
fn bench(b: &mut test::Bencher) {
let i = boxd(include_str!("inp.txt"));
- b.iter(|| unsafe { p1(i) });
+ b.iter(|| unsafe { run(i) });
}
diff --git a/src/util.rs b/src/util.rs
index 40993d8..4720a05 100644
--- a/src/util.rs
+++ b/src/util.rs
@@ -199,6 +199,59 @@ pub enum Dir {
W = b'L',
}
+pub struct UnionFind {
+ p: Vec<usize>,
+ s: Vec<usize>,
+}
+
+impl UnionFind {
+ pub fn new(size: usize) -> Self {
+ Self {
+ s: vec![1; size],
+ p: (0..size).collect(),
+ }
+ }
+
+ fn reset(&mut self) {
+ self.s.fill(1);
+ self.p
+ .iter_mut()
+ .enumerate()
+ .for_each(|(idx, val)| *val = idx);
+ }
+
+ pub fn find(&mut self, key: usize) -> usize {
+ if self.p[key] == key {
+ return key;
+ }
+ let parent = self.find(self.p[key]);
+ self.p[key] = parent;
+ parent
+ }
+
+ pub fn union(&mut self, a: usize, b: usize) -> bool {
+ let α = self.find(a);
+ let β = self.find(b);
+ if α == β {
+ return false;
+ }
+ let a = self.s[α];
+ let b = self.s[β];
+ if a >= b {
+ self.s[α] += b;
+ self.p[β] = α;
+ } else {
+ self.s[β] += a;
+ self.p[α] = β;
+ }
+ true
+ }
+
+ fn group_size(&self, group: usize) -> usize {
+ self.s[group]
+ }
+}
+
pub trait UnsoundUtilities<T> {
fn ψ(self) -> T;
}