heh
2015/6
| -rw-r--r-- | src/inp.txt | 1300 | ||||
| -rw-r--r-- | src/main.rs | 42 | ||||
| -rw-r--r-- | src/solve.kale | 17 | ||||
| -rw-r--r-- | src/util.rs | 2 |
4 files changed, 324 insertions, 1037 deletions
diff --git a/src/inp.txt b/src/inp.txt index f3b13a0..d6cfb3a 100644 --- a/src/inp.txt +++ b/src/inp.txt @@ -1,1000 +1,300 @@ -zgsnvdmlfuplrubt -vlhagaovgqjmgvwq -ffumlmqwfcsyqpss -zztdcqzqddaazdjp -eavfzjajkjesnlsb -urrvucyrzzzooxhx -xdwduffwgcptfwad -orbryxwrmvkrsxsr -jzfeybjlgqikjcow -mayoqiswqqryvqdi -iiyrkoujhgpgkcvx -egcgupjkqwfiwsjl -zbgtglaqqolttgng -eytquncjituzzhsx -dtfkgggvqadhqbwb -zettygjpcoedwyio -rwgwbwzebsnjmtln -esbplxhvzzgawctn -vnvshqgmbotvoine -wflxwmvbhflkqxvo -twdjikcgtpvlctte -minfkyocskvgubvm -sfxhhdhaopajbzof -sofkjdtalvhgwpql -uqfpeauqzumccnrc -tdflsbtiiepijanf -dhfespzrhecigzqb -xobfthcuuzhvhzpn -olgjglxaotocvrhw -jhkzpfcskutwlwge -zurkakkkpchzxjhq -hekxiofhalvmmkdl -azvxuwwfmjdpjskj -arsvmfznblsqngvb -ldhkzhejofreaucc -adrphwlkehqkrdmo -wmveqrezfkaivvaw -iyphmphgntinfezg -blomkvgslfnvspem -cgpaqjvzhbumckwo -ydhqjcuotkeyurpx -sbtzboxypnmdaefr -vxrkhvglynljgqrg -ttgrkjjrxnxherxd -hinyfrjdiwytetkw -sufltffwqbugmozk -tohmqlzxxqzinwxr -jbqkhxfokaljgrlg -fvjeprbxyjemyvuq -gmlondgqmlselwah -ubpwixgxdloqnvjp -lxjfhihcsajxtomj -qouairhvrgpjorgh -nloszcwcxgullvxb -myhsndsttanohnjn -zjvivcgtjwenyilz -qaqlyoyouotsmamm -tadsdceadifqthag -mafgrbmdhpnlbnks -aohjxahenxaermrq -ovvqestjhbuhrwlr -lnakerdnvequfnqb -agwpwsgjrtcjjikz -lhlysrshsmzryzes -xopwzoaqtlukwwdu -xsmfrfteyddrqufn -ohnxbykuvvlbbxpf -bbdlivmchvzfuhoc -vtacidimfcfyobhf -tinyzzddgcnmiabd -tcjzxftqcqrivqhn -vgnduqyfpokbmzim -revkvaxnsxospyow -ydpgwxxoxlywxcgi -wzuxupbzlpzmikel -nscghlafavnsycjh -xorwbquzmgmcapon -asmtiycegeobfxrn -eqjzvgkxgtlyuxok -mmjrskloposgjoqu -gceqosugbkvytfto -khivvoxkvhrgwzjl -qtmejuxbafroifjt -ttmukbmpoagthtfl -bxqkvuzdbehtduwv -gvblrpzjylanoggj -cltewhyjxdbmbtqj -fbkgedqvomdipklj -uxvuplhenqawfcjt -fkdjmayiawdkycva -gnloqfgbnibzyidh -kyzorvtopjiyyyqg -drckpekhpgrioblt -tvhrkmbnpmkkrtki -khaldwntissbijiz -aoojqakosnaxosom -xfptccznbgnpfyqw -moqdwobwhjxhtrow -chfwivedutskovri -gprkyalfnpljcrmi -pwyshpwjndasykst -xuejivogihttzimd -bugepxgpgahtsttl -zufmkmuujavcskpq -urybkdyvsrosrfro -isjxqmlxwtqmulbg -pxctldxgqjqhulgz -hclsekryiwhqqhir -hbuihpalwuidjpcq -ejyqcxmfczqfhbxa -xljdvbucuxnnaysv -irqceqtqwemostbb -anfziqtpqzqdttnz -cgfklbljeneeqfub -zudyqkuqqtdcpmuo -iuvhylvznmhbkbgg -mpgppmgfdzihulnd -argwmgcvqqkxkrdi -pdhrfvdldkfihlou -cbvqnjrvrsnqzfob -lkvovtsqanohzcmm -vxoxjdyoylqcnyzt -kurdpaqiaagiwjle -gwklwnazaxfkuekn -rbaamufphjsjhbdl -tzbrvaqvizhsisbd -pbcqlbfjvlideiub -hiwoetbfywaeddtx -fjirczxtuupfywyf -omeoegeyyospreem -ozbbpupqpsskvrjh -pzvcxkvjdiyeyhxa -odclumkenabcsfzr -npdyqezqdjqaszvm -yodkwzmrhtexfrqa -rjcmmggjtactfrxz -mioxfingsfoimual -aqskaxjjborspfaa -wientdsttkevjtkf -tdaswkzckmxnfnct -voucjhzvkkhuwoqk -boaaruhalgaamqmh -iufzxutxymorltvb -pfbyvbayvnrpijpo -obztirulgyfthgcg -ntrenvhwxypgtjwy -ephlkipjfnjfjrns -pkjhurzbmobhszpx -gqbnjvienzqfbzvj -wjelolsrbginwnno -votanpqpccxqricj -bxyuyiglnmbtvehi -qyophcjfknbcbjrb -anoqkkbcdropskhj -tcnyqaczcfffkrtl -rsvqimuqbuddozrf -meppxdrenexxksdt -tyfhfiynzwadcord -wayrnykevdmywycf -mhowloqnppswyzbu -tserychksuwrgkxz -xycjvvsuaxsbrqal -fkrdsgaoqdcqwlpn -vrabcmlhuktigecp -xgxtdsvpaymzhurx -ciabcqymnchhsxkc -eqxadalcxzocsgtr -tsligrgsjtrnzrex -qeqgmwipbspkbbfq -vzkzsjujltnqwliw -ldrohvodgbxokjxz -jkoricsxhipcibrq -qzquxawqmupeujrr -mizpuwqyzkdbahvk -suupfxbtoojqvdca -ywfmuogvicpywpwm -uevmznxmsxozhobl -vjbyhsemwfwdxfxk -iyouatgejvecmtin -tcchwpuouypllcxe -lgnacnphdiobdsef -uoxjfzmdrmpojgbf -lqbxsxbqqhpjhfxj -knpwpcnnimyjlsyz -fezotpoicsrshfnh -dkiwkgpmhudghyhk -yzptxekgldksridv -pckmzqzyiyzdbcts -oqshafncvftvwvsi -yynihvdywxupqmbt -iwmbeunfiuhjaaic -pkpkrqjvgocvaxjs -ieqspassuvquvlyz -xshhahjaxjoqsjtl -fxrrnaxlqezdcdvd -pksrohfwlaqzpkdd -ravytrdnbxvnnoyy -atkwaifeobgztbgo -inkcabgfdobyeeom -ywpfwectajohqizp -amcgorhxjcybbisv -mbbwmnznhafsofvr -wofcubucymnhuhrv -mrsamnwvftzqcgta -tlfyqoxmsiyzyvgv -ydceguvgotylwtea -btyvcjqhsygunvle -usquiquspcdppqeq -kifnymikhhehgote -ybvkayvtdpgxfpyn -oulxagvbavzmewnx -tvvpekhnbhjskzpj -azzxtstaevxurboa -nfmwtfgrggmqyhdf -ynyzypdmysfwyxgr -iaobtgubrcyqrgmk -uyxcauvpyzabbzgv -fbasfnwiguasoedc -mgmjoalkbvtljilq -szgkxiqkufdvtksb -xgfzborpavdmhiuj -hmuiwnsonvfgcrva -zolcffdtobfntifb -mvzgcsortkugvqjr -pbbpgraaldqvzwhs -zvsxegchksgnhpuv -kdpdboaxsuxfswhx -jdfggigejfupabth -tpeddioybqemyvqz -mxsntwuesonybjby -tzltdsiojfvocige -ubtdrneozoejiqrv -fusyucnhncoxqzql -nlifgomoftdvkpby -pyikzbxoapffbqjw -hzballplvzcsgjug -ymjyigsfehmdsvgz -vpqgyxknniunksko -ffkmaqsjxgzclsnq -jcuxthbedplxhslk -ymlevgofmharicfs -nyhbejkndhqcoisy -rjntxasfjhnlizgm -oqlnuxtzhyiwzeto -tntthdowhewszitu -rmxyoceuwhsvfcua -qpgsjzwenzbxyfgw -sumguxpdkocyagpu -ymfrbxwrawejkduu -hetgrtmojolbmsuf -qzqizpiyfasgttex -qnmoemcpuckzsshx -ddyqiihagcmnxccu -oirwxyfxxyktgheo -phpaoozbdogbushy -uctjdavsimsrnvjn -aurbbphvjtzipnuh -hpbtrubopljmltep -pyyvkthqfsxqhrxg -jdxaiqzkepxbfejk -ukgnwbnysrzvqzlw -lfkatkvcssnlpthd -ucsyecgshklhqmsc -rwdcbdchuahkvmga -rxkgqakawgpwokum -hbuyxeylddfgorgu -tbllspqozaqzglkz -rqfwizjlbwngdvvi -xuxduyzscovachew -kouiuxckkvmetvdy -ycyejrpwxyrweppd -trctlytzwiisjamx -vtvpjceydunjdbez -gmtlejdsrbfofgqy -jgfbgtkzavcjlffj -tyudxlpgraxzchdk -gyecxacqitgozzgd -rxaocylfabmmjcvt -tornfzkzhjyofzqa -kocjcrqcsvagmfqv -zfrswnskuupivzxb -cunkuvhbepztpdug -pmpfnmklqhcmrtmf -tfebzovjwxzumxap -xpsxgaswavnzkzye -lmwijdothmxclqbr -upqxhmctbltxkarl -axspehytmyicthmq -xdwrhwtuooikehbk -tpggalqsytvmwerj -jodysbwnymloeqjf -rxbazvwuvudqlydn -ibizqysweiezhlqa -uexgmotsqjfauhzp -ldymyvumyhyamopg -vbxvlvthgzgnkxnf -pyvbrwlnatxigbrp -azxynqididtrwokb -lwafybyhpfvoawto -ogqoivurfcgspytw -cinrzzradwymqcgu -sgruxdvrewgpmypu -snfnsbywuczrshtd -xfzbyqtyxuxdutpw -fmpvjwbulmncykbo -ljnwoslktrrnffwo -ceaouqquvvienszn -yjomrunrxjyljyge -xpmjsapbnsdnbkdi -uetoytptktkmewre -eixsvzegkadkfbua -afaefrwhcosurprw -bwzmmvkuaxiymzwc -gejyqhhzqgsrybni -gjriqsfrhyguoiiw -gtfyomppzsruhuac -ogemfvmsdqqkfymr -jgzbipsygirsnydh -zghvlhpjnvqmocgr -ngvssuwrbtoxtrka -ietahyupkbuisekn -gqxqwjizescbufvl -eiprekzrygkncxzl -igxfnxtwpyaamkxf -soqjdkxcupevbren -fspypobyzdwstxak -qstcgawvqwtyyidf -gsccjacboqvezxvd -bfsblokjvrqzphmc -srezeptvjmncqkec -opmopgyabjjjoygt -msvbufqexfrtecbf -uiaqweyjiulplelu -pbkwhjsibtwjvswi -xwwzstmozqarurrq -nytptwddwivtbgyq -ejxvsufbzwhzpabr -jouozvzuwlfqzdgh -gfgugjihbklbenrk -lwmnnhiuxqsfvthv -bzvwbknfmaeahzhi -cgyqswikclozyvnu -udmkpvrljsjiagzi -zzuhqokgmisguyna -ekwcdnjzuctsdoua -eueqkdrnzqcaecyd -lnibwxmokbxhlris -fdrbftgjljpzwhea -iabvuhhjsxmqfwld -qgogzkynrgejakta -mfcqftytemgnpupp -klvhlhuqhosvjuqk -gdokmxcgoqvzvaup -juududyojcazzgvr -fyszciheodgmnotg -yfpngnofceqfvtfs -cahndkfehjumwavc -dxsvscqukljxcqyi -cqukcjtucxwrusji -vevmmqlehvgebmid -ahswsogfrumzdofy -ftasbklvdquaxhxb -tsdeumygukferuif -ybfgbwxaaitpwryg -djyaoycbymezglio -trzrgxdjqnmlnzpn -rumwchfihhihpqui -ffrvnsgrnzemksif -oizlksxineqknwzd -cirqcprftpjzrxhk -zrhemeqegmzrpufd -kqgatudhxgzlgkey -syjugymeajlzffhq -nlildhmgnwlopohp -flcszztfbesqhnyz -ohzicmqsajyqptrw -ebyszucgozsjbelq -enxbgvvcuqeloxud -ubwnvecbsmhkxwuk -noifliyxvlkqphbo -hazlqpetgugxxsiz -ihdzoerqwqhgajzb -ivrdwdquxzhdrzar -synwycdvrupablib -mqkdjkntblnmtvxj -qmmvoylxymyovrnq -pjtuxskkowutltlq -gchrqtloggkrjciz -namzqovvsdipazae -yfokqhkmakyjzmys -iapxlbuoiwqfnozm -fbcmlcekgfdurqxe -ednzgtczbplwxjlq -gdvsltzpywffelsp -oaitrrmpqdvduqej -gseupzwowmuuibjo -dfzsffsqpaqoixhh -tclhzqpcvbshxmgx -cfqkptjrulxiabgo -iraiysmwcpmtklhf -znwjlzodhktjqwlm -lcietjndlbgxzjht -gdkcluwjhtaaprfo -vbksxrfznjzwvmmt -vpfftxjfkeltcojl -thrmzmeplpdespnh -yafopikiqswafsit -xxbqgeblfruklnhs -qiufjijzbcpfdgig -ikksmllfyvhyydmi -sknufchjdvccccta -wpdcrramajdoisxr -grnqkjfxofpwjmji -lkffhxonjskyccoh -npnzshnoaqayhpmb -fqpvaamqbrnatjia -oljkoldhfggkfnfc -ihpralzpqfrijynm -gvaxadkuyzgbjpod -onchdguuhrhhspen -uefjmufwlioenaus -thifdypigyihgnzo -ugqblsonqaxycvkg -yevmbiyrqdqrmlbw -bvpvwrhoyneorcmm -gbyjqzcsheaxnyib -knhsmdjssycvuoqf -nizjxiwdakpfttyh -nwrkbhorhfqqoliz -ynsqwvwuwzqpzzwp -yitscrgexjfclwwh -dhajwxqdbtrfltzz -bmrfylxhthiaozpv -frvatcvgknjhcndw -xlvtdmpvkpcnmhya -pxpemuzuqzjlmtoc -dijdacfteteypkoq -knrcdkrvywagglnf -fviuajtspnvnptia -xvlqzukmwbcjgwho -bazlsjdsjoeuvgoz -nslzmlhosrjarndj -menvuwiuymknunwm -uavfnvyrjeiwqmuu -yrfowuvasupngckz -taevqhlrcohlnwye -skcudnogbncusorn -omtnmkqnqedsajfv -yqmgsqdgsuysqcts -odsnbtyimikkbmdd -vuryaohxdvjllieb -dhaxldeywwsfamlo -opobvtchezqnxpak -pzfnegouvsrfgvro -rzkcgpxdslzrdktu -ksztdtqzxvhuryam -ctnqnhkcooqipgkh -pyqbbvrzdittqbgm -koennvmolejeftij -rvzlreqikqlgyczj -xrnujfoyhonzkdgd -mmsmhkxaiqupfjil -ypjwoemqizddvyfd -qgugcxnbhvgahykj -cviodlsrtimbkgmy -xbfbbechhmrjxhnw -psuipaoucfczfxkp -hdhwcpeuptgqqvim -gsxlruhjeaareilr -vgyqonnljuznyrhk -eewezahlumervpyu -iiolebrxfadtnigy -tdadlrodykrdfscn -ocvdtzjxrhtjurpo -gidljbuvuovkhhrf -qwfcpilbjwzboohd -xzohxonlezuiupbg -vslpbkkqgvgbcbix -pivzqrzfxosbstzn -fyqcfboevcqmbhhs -yqsrneacnlxswojx -heicqpxxyrwcbsjz -yzynmnnoumkmlbeh -bncadbjdvvmczylw -hlnjskgfzbgmigfn -fphpszymugpcykka -zbifcktanxpmufvy -saklpkhoyfeqbguy -nqtqfcfxmpivnjyo -locygrwerxlsvzqm -qqflecydqvlogjme -njklmixvgkzpgppf -ugzkpjwjflaswyma -lriousvkbeftslcy -nsvsauxzfbbotgmh -tblcpuhjyybrlica -hqwshxcilwtmxrsf -xojwroydfeoqupup -tikuzsrogpnohpib -layenyqgxdfggloc -nqsvjvbrpuxkqvmq -ivchgxkdlfjdzxmk -uoghiuosiiwiwdws -twsgsfzyszsfinlc -waixcmadmhtqvcmd -zkgitozgrqehtjkw -xbkmyxkzqyktmpfi -qlyapfmlybmatwxn -ntawlvcpuaebuypf -clhebxqdkcyndyof -nrcxuceywiklpemc -lmurgiminxpapzmq -obalwqlkykzflxou -huvcudpiryefbcye -zlxbddpnyuyapach -gqfwzfislmwzyegy -jhynkjtxedmemlob -hmrnvjodnsfiukex -pstmikjykzyavfef -wuwpnscrwzsyalyt -hksvadripgdgwynm -tvpfthzjleqfxwkh -xpmrxxepkrosnrco -qjkqecsnevlhqsly -jjnrfsxzzwkhnwdm -pehmzrzsjngccale -bsnansnfxduritrr -ejzxkefwmzmbxhlb -pceatehnizeujfrs -jtidrtgxopyeslzl -sytaoidnamfwtqcr -iabjnikomkgmyirr -eitavndozoezojsi -wtsbhaftgrbqfsmm -vvusvrivsmhtfild -qifbtzszfyzsjzyx -ifhhjpaqatpbxzau -etjqdimpyjxiuhty -fvllmbdbsjozxrip -tjtgkadqkdtdlkpi -xnydmjleowezrecn -vhcbhxqalroaryfn -scgvfqsangfbhtay -lbufpduxwvdkwhmb -tshipehzspkhmdoi -gtszsebsulyajcfl -dlrzswhxajcivlgg -kgjruggcikrfrkrw -xxupctxtmryersbn -hljjqfjrubzozxts -giaxjhcwazrenjzs -tyffxtpufpxylpye -jfugdxxyfwkzqmgv -kbgufbosjghahacw -xpbhhssgegmthwxb -npefofiharjypyzk -velxsseyxuhrpycy -sglslryxsiwwqzfw -susohnlpelojhklv -lfnpqfvptqhogdmk -vtcrzetlekguqyle -jlyggqdtamcjiuxn -olxxqfgizjmvigvl -cyypypveppxxxfuq -hewmxtlzfqoqznwd -jzgxxybfeqfyzsmp -xzvvndrhuejnzesx -esiripjpvtqqwjkv -xnhrwhjtactofwrd -knuzpuogbzplofqx -tihycsdwqggxntqk -xkfywvvugkdalehs -cztwdivxagtqjjel -dsaslcagopsbfioy -gmowqtkgrlqjimbl -ctcomvdbiatdvbsd -gujyrnpsssxmqjhz -nygeovliqjfauhjf -mmgmcvnuppkbnonz -bhipnkoxhzcotwel -wkwpgedgxvpltqid -mliajvpdocyzcbot -kqjhsipuibyjuref -zqdczykothbgxwsy -koirtljkuqzxioaz -audpjvhmqzvhzqas -cxyhxlhntyidldfx -iasgocejboxjgtkx -abehujmqotwcufxp -fmlrzqmazajxeedl -knswpkekbacuxfby -yvyalnvrxgstqhxm -sjnrljfrfuyqfwuw -ssaqruwarlvxrqzm -iaxbpeqqzlcwfqjz -uwyxshjutkanvvsc -uxwrlwbblcianvnb -nodtifgrxdojhneh -mloxjfusriktxrms -lkfzrwulbctupggc -gcrjljatfhitcgfj -tkdfxeanwskaivqs -ypyjxqtmitwubbgt -ssxbygzbjsltedjj -zdrsnoorwqfalnha -xlgmissaiqmowppd -azhbwhiopwpguiuo -fydlahgxtekbweet -qtaveuqpifprdoiy -kpubqyepxqleucem -wlqrgqmnupwiuory -rwyocktuqkuhdwxz -abzjfsdevoygctqv -zsofhaqqghncmzuw -lqbjwjqxqbfgdckc -bkhyxjkrqbbunido -yepxfjnnhldidsjb -builayfduxbppafc -wedllowzeuswkuez -gverfowxwtnvgrmo -tpxycfumxdqgntwf -lqzokaoglwnfcolw -yqsksyheyspmcdqt -vufvchcjjcltwddl -saeatqmuvnoacddt -dxjngeydvsjbobjs -ucrcxoakevhsgcep -cajgwjsfxkasbayt -hknzmteafsfemwuv -xxwhxwiinchqqudr -usfenmavvuevevgr -kxcobcwhsgyizjok -vhqnydeboeunnvyk -bgxbwbxypnxvaacw -bwjzdypacwgervgk -rrioqjluawwwnjcr -fiaeyggmgijnasot -xizotjsoqmkvhbzm -uzphtrpxwfnaiidz -kihppzgvgyoncptg -hfbkfrxwejdeuwbz -zgqthtuaqyrxicdy -zitqdjnnwhznftze -jnzlplsrwovxlqsn -bmwrobuhwnwivpca -uuwsvcdnoyovxuhn -nmfvoqgoppoyosaj -hxjkcppaisezygpe -icvnysgixapvtoos -vbvzajjgrmjygkhu -jinptbqkyqredaos -dpmknzhkhleawfvz -ouwwkfhcedsgqqxe -owroouiyptrijzgv -bewnckpmnbrmhfyu -evdqxevdacsbfbjb -catppmrovqavxstn -dqsbjibugjkhgazg -mkcldhjochtnvvne -sblkmhtifwtfnmsx -lynnaujghehmpfpt -vrseaozoheawffoq -ytysdzbpbazorqes -sezawbudymfvziff -vrlfhledogbgxbau -bipdlplesdezbldn -ermaenjunjtbekeo -eyaedubkthdecxjq -gbzurepoojlwucuy -rsiaqiiipjlouecx -beqjhvroixhiemtw -buzlowghhqbcbdwv -ldexambveeosaimo -fpyjzachgrhxcvnx -komgvqejojpnykol -fxebehjoxdujwmfu -jnfgvheocgtvmvkx -qmcclxxgnclkuspx -rsbelzrfdblatmzu -vexzwqjqrsenlrhm -tnfbkclwetommqmh -lzoskleonvmprdri -nnahplxqscvtgfwi -ubqdsflhnmiayzrp -xtiyqxhfyqonqzrn -omdtmjeqhmlfojfr -cnimgkdbxkkcnmkb -tapyijgmxzbmqnks -byacsxavjboovukk -awugnhcrygaoppjq -yxcnwrvhojpuxehg -btjdudofhxmgqbao -nzqlfygiysfuilou -nubwfjdxavunrliq -vqxmmhsbmhlewceh -ygavmcybepzfevrp -kgflmrqsvxprkqgq -iaqyqmcaedscmakk -cvbojnbfmrawxzkh -jjjrprbnlijzatuw -lcsudrrfnnggbrmk -qzgxbiavunawfibc -gnnalgfvefdfdwwg -nokmiitzrigxavsc -etzoxwzxqkkhvais -urxxfacgjccieufi -lqrioqhuvgcotuec -dydbaeyoypsbftra -hhrotenctylggzaf -evctqvzjnozpdxzu -tbpvithmorujxlcp -pllbtcbrtkfpvxcw -fzyxdqilyvqreowv -xdleeddxwvqjfmmt -fcldzthqqpbswoin -sgomzrpjfmvgwlzi -axjyskmtdjbxpwoz -hcvaevqxsmabvswh -lfdlsfcwkwicizfk -isjbwpzdognhoxvm -oqnexibqxlyxpluh -zqfbgodsfzwgcwuf -kvmnwruwsjllbldz -kghazimdyiyhmokj -uiktgpsxpoahofxn -zkdwawxargcmidct -ftbixlyiprshrjup -nofhmbxififwroeg -mcdaqrhplffxrcdt -fbjxnwojcvlawmlb -rizoftvwfdhiwyac -eduogrtyhxfwyars -zoikunqxgjwfqqwr -zxwbbpmvctzezaqh -nghujwyeabwdqnop -vcxamijpoyyksogn -jnckdbuteoqlsdae -jurfqqawafmsiqwv -inepmztrzehfafie -tznzkyvzodbrtscf -xewbavjeppflwscl -ucndzsorexjlnplo -jpxbctscngxgusvu -mfmygcllauzuoaok -oibkuxhjmhxhhzby -zjkslwagmeoisunw -avnnxmopdgvmukuu -jmaargejcwboqhkt -yacmpeosarsrfkrv -iqhgupookcaovwgh -ebjkdnxwtikqzufc -imdhbarytcscbsvb -ifyibukeffkbqvcr -aloighmyvwybtxhx -yszqwrutbkiwkxjg -xyholyzlltjhsuhp -gykhmrwucneoxcrf -badkdgqrpjzbabet -sunaucaucykwtkjj -pumqkglgfdhneero -usgtyuestahlydxq -xmfhflphzeudjsjm -knywgmclisgpootg -mtojnyrnvxtweuzb -uuxufbwfegysabww -vobhwwocqttlbsik -yuydfezeqgqxqmnd -wbqgqkwbibiilhzc -sfdmgxsbuzsawush -ilhbxcfgordyxwvp -ahqoavuysblnqaeg -plwgtvpgotskmsey -ewjcmzkcnautrrmp -tyekgzbznlikcyqj -bqzctiuaxpriuiga -bimvbfjkiupyqiys -mpqtbcxfhwymxncw -htemlptvqhharjgb -mqbsmsruwzzxgcxc -zjyedjwhnvteuaid -pzoelkoidwglpttc -efydnsvlfimvwxhx -gfyhgoeiyjcgfyze -deqtomhwopmzvjlt -casafubtkoopuaju -yylsfarntbucfulg -mgjwsormkjsrrxan -lkkenpupgmjpnqqd -tegweszyohsoluot -lihsfdwxmxvwdxna -rrefrjjxerphejwb -guuazonjoebhymtm -ysofqzmfmyneziki -lmjgaliatcpduoal -qzthcpjwtgahbebr -wvakvephyukmpemm -simxacxxzfoaeddw -aetgqmiqzxbvbviz -jxlmhdmqggevrxes -mmuglnjmuddzgaik -svopsqhtrslgycgc -xnvcsiiqrcjkvecn -kkvumxtvashxcops -bduflsdyeectvcgl -vfrxbwmmytjvqnsj -eeqtdneiyiaiofxw -crtbgknfacjtwkfl -uuutuoxdsxolpbhd -lcrztwzreaswovtn -htorkvnvujmjdqzj -wttzuzvrzlyhfzyf -oraewznfwgdsnhuk -rctlkqqvkwbgrcgk -cfehrsrqhzyiwtmz -kbvxwcumjkhvjpui -xxlocexbmniiakfo -gtknkkzvykmlqghl -kcjuxvkuimhwqrtk -vohekwkuyuoacuww -vorctgughscysyfo -zmjevqplngzswxyq -qhswdrhrijnatkyo -joakcwpfggtitizs -juzlwjijcmtswdtq -icbyaqohpkemhkip -rpdxgpzxncedmvzh -rozkmimbqhbhcddv -wkkypomlvyglpfpf -jcaqyaqvsefwtaya -ghvmtecoxlebdwnf -lqrcyiykkkpkxvqt -eqlarfazchmzotev -vqwndafvmpguggef -dbfxzrdkkrusmdke -cmjpjjgndozcmefj -hbrdcwjuyxapyhlo -mmforetykbosdwce -zynfntqwblbnfqik -sodwujfwlasznaiz -yyvrivjiqnxzqkfp -uldbskmmjbqllpnm -fyhhrmrsukeptynl -hpfjekktvdkgdkzl -bozhkoekcxzeorob -uvpptyfrzkvmtoky -hkhfprmjdpjvfkcb -igxzwktwsqhsivqu -qceomwysgkcylipb -cglateoynluyeqgc -xcsdfkpeguxgvpfh -owjhxlcncdgkqyia -rpbmrpcesiakqpna -lueszxiourxsmezb -zelvsowimzkxliwc -vzxbttoobtvdtkca -pfxvzphzwscqkzsi -edsjorainowytbzu -ipsegdaluoiphmnz -mkhueokfpemywvuw -urxdnumhylpafdlc -ggluurzavsxkvwkl -ctclphidqgteakox -tfobosynxsktajuk -jzrmemhxqmzhllif -eemwekimdfvqslsx -yjkwpzrbanoaajgq -rlxghzanuyeimfhx -hozbgdoorhthlqpv -obkbmflhyanxilnx -xojrippyxjmpzmsz -ukykmbfheixuviue -qivlmdexwucqkres -rmyxxipqkarpjmox -fgaftctbvcvnrror -raawxozucfqvasru -dinpjbdfjfizexdh -gybxubwnnbuyvjcr -qrqitdvyoneqyxcg -jqzcfggayzyoqteo -cikqpvxizpdbmppm -stfpldgyhfmucjjv -slzbcuihmimpduri -aufajwfrsorqqsnl -iylmzraibygmgmqj -lcdyfpcqlktudfmu -pmomzzsdpvgkkliw -zpplirgtscfhbrkj -mvhyerxfiljlotjl -ofkvrorwwhusyxjx -xngzmvcgkqfltjpe -yxfxaqipmysahqqq -sdqafdzgfdjuabup -qcqajmerahcdgxfv -xqimrqtupbapawro -qfvkqwidzzrehsbl -himixxvueksiqfdf -vgtfqpuzxxmhrvvd -adiioqeiejguaost -jnzxuycjxvxehbvm -xedbpxdhphamoodk -jsrioscmwlsfuxrg -mtsynnfxunuohbnf -enamqzfzjunnnkpe -uwcvfecunobyhces -ciygixtgbsccpftq -ewjgcronizkcsfjy -wztjkoipxsikoimv -jrgalyvfelwxforw -imylyalawbqwkrwb -yflwqfnuuvgjsgcj -wkysyzusldlojoue -zopllxnidcffcuau -bscgwxuprxaerskj -zvnvprxxjkhnkkpq -nejwxbhjxxdbenid -chryiccsebdbcnkc -guoeefaeafhlgvxh -nzapxrfrrqhsingx -mkzvquzvqvwsejqs -kozmlmbchydtxeeo -keylygnoqhmfzrfp -srwzoxccndoxylxe -uqjzalppoorosxxo -potmkinyuqxsfdfw -qkkwrhpbhypxhiun -wgfvnogarjmdbxyh -gkidtvepcvxopzuf -atwhvmmdvmewhzty -pybxizvuiwwngqej -zfumwnazxwwxtiry -keboraqttctosemx -vtlzxaqdetbhclib -wjiecykptzexuayl -ejatfnyjjdawepyk -mpcrobansyssvmju -gqukndzganeueabm -ukzscvomorucdnqd -wfydhtbzehgwfazx -mtwqdzlephqvxqmx -dltmlfxbjopefibh -atcfrowdflluqtbi -vowawlophlxaqonw -vblgdjzvwnocdipw -uzerzksmkvnlvlhm -ytjwhpaylohorvxd -siprvfxvnxcdgofz -cbhjupewcyjhvtgs -apqtozaofusmfqli -tmssrtlxfouowqnr -ntutrvwnzzgmokes -zrsgpwdzokztdpis -nrobvmsxtfmrqdhv -kadkaftffaziqdze -yrovbgcyqtlsnoux -modheiwuhntdecqs -gzhjypwddizemnys -gaputpwpcsvzxjho -bgmouxwoajgaozau -oxuapfrjcpyakiwt -kntwbvhuaahdixzj -epqjdjbnkxdnaccx -dspltdvznhypykri -tdrgqmbnagrxdwtt -njfqawzjggmemtbg -chpemsgwpzjpdnkk -fpsrobmbqbmigmwk -flxptsrqaazmprnl -nzdunrxlcbfklshm -miuwljvtkgzdlbnn -xbhjakklmbhsdmdt -xwxhsbnrwnegwcov -pwosflhodjaiexwq -fhgepuluczttfvqh -tldxcacbvxyamvkt -gffxatrjglkcehim -tzotkdrpxkucsdps -wxheftdepysvmzbe -qfooyczdzoewrmku -rvlwikuqdbpjuvoo -bcbrnbtfrdgijtzt -vaxqmvuogsxonlgq -ibsolflngegravgo -txntccjmqakcoorp -vrrbmqaxfbarmlmc -dzspqmttgsuhczto -pikcscjunxlwqtiw -lwzyogwxqitqfqlv -gsgjsuaqejtzglym -feyeqguxbgmcmgpp -gmttebyebdwvprkn -mzuuwbhzdjfdryxu -fganrbnplymqbzjx -cvsrbdcvhtxxdmro -scmgkjlkqukoamyp -fkgrqbyqpqcworqc -hjsrvkdibdjarxxb -sztzziuqroeidcus -pxdfvcpvwaddrzwv -phdqqxleqdjfgfbg -cqfikbgxvjmnfncy +toggle 461,550 through 564,900 +turn off 370,39 through 425,839 +turn off 464,858 through 833,915 +turn off 812,389 through 865,874 +turn on 599,989 through 806,993 +turn on 376,415 through 768,548 +turn on 606,361 through 892,600 +turn off 448,208 through 645,684 +toggle 50,472 through 452,788 +toggle 205,417 through 703,826 +toggle 533,331 through 906,873 +toggle 857,493 through 989,970 +turn off 631,950 through 894,975 +turn off 387,19 through 720,700 +turn off 511,843 through 581,945 +toggle 514,557 through 662,883 +turn off 269,809 through 876,847 +turn off 149,517 through 716,777 +turn off 994,939 through 998,988 +toggle 467,662 through 555,957 +turn on 952,417 through 954,845 +turn on 565,226 through 944,880 +turn on 214,319 through 805,722 +toggle 532,276 through 636,847 +toggle 619,80 through 689,507 +turn on 390,706 through 884,722 +toggle 17,634 through 537,766 +toggle 706,440 through 834,441 +toggle 318,207 through 499,530 +toggle 698,185 through 830,343 +toggle 566,679 through 744,716 +toggle 347,482 through 959,482 +toggle 39,799 through 981,872 +turn on 583,543 through 846,710 +turn off 367,664 through 595,872 +turn on 805,439 through 964,995 +toggle 209,584 through 513,802 +turn off 106,497 through 266,770 +turn on 975,2 through 984,623 +turn off 316,684 through 369,876 +turn off 30,309 through 259,554 +turn off 399,680 through 861,942 +toggle 227,740 through 850,829 +turn on 386,603 through 552,879 +turn off 703,795 through 791,963 +turn off 573,803 through 996,878 +turn off 993,939 through 997,951 +turn on 809,221 through 869,723 +turn off 38,720 through 682,751 +turn off 318,732 through 720,976 +toggle 88,459 through 392,654 +turn off 865,654 through 911,956 +toggle 264,284 through 857,956 +turn off 281,776 through 610,797 +toggle 492,660 through 647,910 +turn off 879,703 through 925,981 +turn off 772,414 through 974,518 +turn on 694,41 through 755,96 +turn on 452,406 through 885,881 +turn off 107,905 through 497,910 +turn off 647,222 through 910,532 +turn on 679,40 through 845,358 +turn off 144,205 through 556,362 +turn on 871,804 through 962,878 +turn on 545,676 through 545,929 +turn off 316,716 through 413,941 +toggle 488,826 through 755,971 +toggle 957,832 through 976,992 +toggle 857,770 through 905,964 +toggle 319,198 through 787,673 +turn on 832,813 through 863,844 +turn on 818,296 through 818,681 +turn on 71,699 through 91,960 +turn off 838,578 through 967,928 +toggle 440,856 through 507,942 +toggle 121,970 through 151,974 +toggle 391,192 through 659,751 +turn on 78,210 through 681,419 +turn on 324,591 through 593,939 +toggle 159,366 through 249,760 +turn off 617,167 through 954,601 +toggle 484,607 through 733,657 +turn on 587,96 through 888,819 +turn off 680,984 through 941,991 +turn on 800,512 through 968,691 +turn off 123,588 through 853,603 +turn on 1,862 through 507,912 +turn on 699,839 through 973,878 +turn off 848,89 through 887,893 +toggle 344,353 through 462,403 +turn on 780,731 through 841,760 +toggle 693,973 through 847,984 +toggle 989,936 through 996,958 +toggle 168,475 through 206,963 +turn on 742,683 through 769,845 +toggle 768,116 through 987,396 +turn on 190,364 through 617,526 +turn off 470,266 through 530,839 +toggle 122,497 through 969,645 +turn off 492,432 through 827,790 +turn on 505,636 through 957,820 +turn on 295,476 through 698,958 +toggle 63,298 through 202,396 +turn on 157,315 through 412,939 +turn off 69,789 through 134,837 +turn off 678,335 through 896,541 +toggle 140,516 through 842,668 +turn off 697,585 through 712,668 +toggle 507,832 through 578,949 +turn on 678,279 through 886,621 +toggle 449,744 through 826,910 +turn off 835,354 through 921,741 +toggle 924,878 through 985,952 +turn on 666,503 through 922,905 +turn on 947,453 through 961,587 +toggle 525,190 through 795,654 +turn off 62,320 through 896,362 +turn on 21,458 through 972,536 +turn on 446,429 through 821,970 +toggle 376,423 through 805,455 +toggle 494,896 through 715,937 +turn on 583,270 through 667,482 +turn off 183,468 through 280,548 +toggle 623,289 through 750,524 +turn on 836,706 through 967,768 +turn on 419,569 through 912,908 +turn on 428,260 through 660,433 +turn off 683,627 through 916,816 +turn on 447,973 through 866,980 +turn on 688,607 through 938,990 +turn on 245,187 through 597,405 +turn off 558,843 through 841,942 +turn off 325,666 through 713,834 +toggle 672,606 through 814,935 +turn off 161,812 through 490,954 +turn on 950,362 through 985,898 +turn on 143,22 through 205,821 +turn on 89,762 through 607,790 +toggle 234,245 through 827,303 +turn on 65,599 through 764,997 +turn on 232,466 through 965,695 +turn on 739,122 through 975,590 +turn off 206,112 through 940,558 +toggle 690,365 through 988,552 +turn on 907,438 through 977,691 +turn off 838,809 through 944,869 +turn on 222,12 through 541,832 +toggle 337,66 through 669,812 +turn on 732,821 through 897,912 +toggle 182,862 through 638,996 +turn on 955,808 through 983,847 +toggle 346,227 through 841,696 +turn on 983,270 through 989,756 +turn off 874,849 through 876,905 +turn off 7,760 through 678,795 +toggle 973,977 through 995,983 +turn off 911,961 through 914,976 +turn on 913,557 through 952,722 +turn off 607,933 through 939,999 +turn on 226,604 through 517,622 +turn off 3,564 through 344,842 +toggle 340,578 through 428,610 +turn on 248,916 through 687,925 +toggle 650,185 through 955,965 +toggle 831,359 through 933,536 +turn off 544,614 through 896,953 +toggle 648,939 through 975,997 +turn on 464,269 through 710,521 +turn off 643,149 through 791,320 +turn off 875,549 through 972,643 +turn off 953,969 through 971,972 +turn off 236,474 through 772,591 +toggle 313,212 through 489,723 +toggle 896,829 through 897,837 +toggle 544,449 through 995,905 +turn off 278,645 through 977,876 +turn off 887,947 through 946,977 +turn on 342,861 through 725,935 +turn on 636,316 through 692,513 +toggle 857,470 through 950,528 +turn off 736,196 through 826,889 +turn on 17,878 through 850,987 +turn on 142,968 through 169,987 +turn on 46,470 through 912,853 +turn on 182,252 through 279,941 +toggle 261,143 through 969,657 +turn off 69,600 through 518,710 +turn on 372,379 through 779,386 +toggle 867,391 through 911,601 +turn off 174,287 through 900,536 +toggle 951,842 through 993,963 +turn off 626,733 through 985,827 +toggle 622,70 through 666,291 +turn off 980,671 through 985,835 +turn off 477,63 through 910,72 +turn off 779,39 through 940,142 +turn on 986,570 through 997,638 +toggle 842,805 through 943,985 +turn off 890,886 through 976,927 +turn off 893,172 through 897,619 +turn off 198,780 through 835,826 +toggle 202,209 through 219,291 +turn off 193,52 through 833,283 +toggle 414,427 through 987,972 +turn on 375,231 through 668,236 +turn off 646,598 through 869,663 +toggle 271,462 through 414,650 +turn off 679,121 through 845,467 +toggle 76,847 through 504,904 +turn off 15,617 through 509,810 +toggle 248,105 through 312,451 +turn off 126,546 through 922,879 +turn on 531,831 through 903,872 +toggle 602,431 through 892,792 +turn off 795,223 through 892,623 +toggle 167,721 through 533,929 +toggle 813,251 through 998,484 +toggle 64,640 through 752,942 +turn on 155,955 through 892,985 +turn on 251,329 through 996,497 +turn off 341,716 through 462,994 +toggle 760,127 through 829,189 +turn on 86,413 through 408,518 +toggle 340,102 through 918,558 +turn off 441,642 through 751,889 +turn on 785,292 through 845,325 +turn off 123,389 through 725,828 +turn on 905,73 through 983,270 +turn off 807,86 through 879,276 +toggle 500,866 through 864,916 +turn on 809,366 through 828,534 +toggle 219,356 through 720,617 +turn off 320,964 through 769,990 +turn off 903,167 through 936,631 +toggle 300,137 through 333,693 +toggle 5,675 through 755,848 +turn off 852,235 through 946,783 +toggle 355,556 through 941,664 +turn on 810,830 through 867,891 +turn off 509,869 through 667,903 +toggle 769,400 through 873,892 +turn on 553,614 through 810,729 +turn on 179,873 through 589,962 +turn off 466,866 through 768,926 +toggle 143,943 through 465,984 +toggle 182,380 through 569,552 +turn off 735,808 through 917,910 +turn on 731,802 through 910,847 +turn off 522,74 through 731,485 +turn on 444,127 through 566,996 +turn off 232,962 through 893,979 +turn off 231,492 through 790,976 +turn on 874,567 through 943,684 +toggle 911,840 through 990,932 +toggle 547,895 through 667,935 +turn off 93,294 through 648,636 +turn off 190,902 through 532,970 +turn off 451,530 through 704,613 +toggle 936,774 through 937,775 +turn off 116,843 through 533,934 +turn on 950,906 through 986,993 +turn on 910,51 through 945,989 +turn on 986,498 through 994,945 +turn off 125,324 through 433,704 +turn off 60,313 through 75,728 +turn on 899,494 through 940,947 +toggle 832,316 through 971,817 +toggle 994,983 through 998,984 +toggle 23,353 through 917,845 +toggle 174,799 through 658,859 +turn off 490,878 through 534,887 +turn off 623,963 through 917,975 +toggle 721,333 through 816,975 +toggle 589,687 through 890,921 +turn on 936,388 through 948,560 +turn off 485,17 through 655,610 +turn on 435,158 through 689,495 +turn on 192,934 through 734,936 +turn off 299,723 through 622,847 +toggle 484,160 through 812,942 +turn off 245,754 through 818,851 +turn on 298,419 through 824,634 +toggle 868,687 through 969,760 +toggle 131,250 through 685,426 +turn off 201,954 through 997,983 +turn on 353,910 through 832,961 +turn off 518,781 through 645,875 +turn off 866,97 through 924,784 +toggle 836,599 through 857,767 +turn on 80,957 through 776,968 +toggle 277,130 through 513,244 +turn off 62,266 through 854,434 +turn on 792,764 through 872,842 +turn off 160,949 through 273,989 +turn off 664,203 through 694,754 +toggle 491,615 through 998,836 +turn off 210,146 through 221,482 +turn off 209,780 through 572,894 +turn on 766,112 through 792,868 +turn on 222,12 through 856,241 diff --git a/src/main.rs b/src/main.rs index 9e94395..a37b4f2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -38,26 +38,30 @@ extern crate test; pub mod util; use atools::prelude::*; pub use util::prelude::*; -fn area([l, w, h]: [u32; 3]) -> u32 { - 2 * l * w + 2 * w * h + 2 * h * l -} #[no_mangle] pub unsafe fn p1(i: &str) -> impl Display { - for n in 0.. { - let x = md5::compute(format!("iwrupvqb{n}")); - if x.0.take::<3>() == [0x00; 3] { - return n; + let mut m = [[0u32; 1000]; 1000]; + for l in i.行() { + let (d, a, b) = if l.starts_with(b"toggle") { + let [_, a, _, b] = l.str().split(' ').carr::<4>(); + (2, a, b) + } else { + let [_, x, a, _, b] = l.str().split(' ').carr::<5>(); + ((x == "on") as u32, a, b) + }; + let [a, b] = [a, b].map(|x| x.μ(',').mb(|x| x.λ::<u32>())); + for x in a.0..=b.0 { + for y in a.1..=b.1 { + let e = &mut m[x as usize][y as usize]; + match d { + 0 => *e = e.saturating_sub(1), + 1 => *e += 1, + _ => *e += 2, + } + } } } - 0 -} - -#[no_mangle] -pub unsafe fn p2(i: &str) -> impl Display { - i.行() - .map(|x| x.str().split('x').map(|x| x.λ::<u32>()).carr::<3>()) - .map(|x| x.sort().take::<2>().sum() * 2 + x.product()) - .sum::<u32>() + m.as_flattened().into_iter().sum::<u32>() } fn main() { @@ -69,9 +73,3 @@ fn benc(b: &mut test::Bencher) { let i = boxd(include_str!("inp.txt")); b.iter(|| unsafe { p1(i) }); } - -#[bench] -fn benc_sort(b: &mut test::Bencher) { - let i = boxd(include_str!("inp.txt")); - b.iter(|| unsafe { p2(i) }); -} diff --git a/src/solve.kale b/src/solve.kale index 31cff1b..dc1eef5 100644 --- a/src/solve.kale +++ b/src/solve.kale @@ -1,15 +1,4 @@ +/ 1000⏫^- (1000⏫^-) 🗺 + "/home/os/aoc/src/inp.txt"📂 -^10≢👩👩👧👧 -(( - ("aeiou" ≡🗺+↘️+↘️3≥) - (2🪟(≡⬇️)🗺+↘️0>) - (2🪟 "ab" "cd" "pq" "xy"⎦4 (🔀≣🗺+↘️)🗺+↘️0≡) - &∧∧ -)🗺+↘️) -((("s.append(bool(__import__('re') - .search(r'(..).*\1', - bytes(s.pop()).decode() - ) -))"🐍1→1) -(3🪟 ((⤵️1≡)⬇️)🗺+↘️0>)&∧ -)🗺+↘️)& +^10≢👩👩👧👧(^32≢👩👩👧👧 (⤵️1)⬇️ )🗺
\ No newline at end of file diff --git a/src/util.rs b/src/util.rs index f20cc17..6d79a2e 100644 --- a/src/util.rs +++ b/src/util.rs @@ -703,7 +703,7 @@ impl Κ for &[u8] { where <T as FromStr>::Err: std::fmt::Display, { - std::str::from_utf8(self).ψ().κ() + self.str().κ() } } |