diff options
| author | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-12-19 17:08:00 +0100 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-12-19 17:08:00 +0100 |
| commit | d7d0ddcaf91cdba5b34fa875592fcb933b6915f1 (patch) | |
| tree | f124f4ec4f488ba068719ddc0d99edf3223f4934 | |
| parent | 457c2af984ac34e6615a8b49b953c4499809255c (diff) | |
| -rw-r--r-- | input/day17.txt | 141 | ||||
| -rw-r--r-- | input/day18.txt | 602 | ||||
| -rw-r--r-- | input/day19.txt | 733 | ||||
| -rw-r--r-- | src/day12pt1.rs | 5 | ||||
| -rw-r--r-- | src/day17pt1.rs | 74 | ||||
| -rw-r--r-- | src/day17pt2.rs | 80 | ||||
| -rw-r--r-- | src/main.rs | 8 |
7 files changed, 1638 insertions, 5 deletions
diff --git a/input/day17.txt b/input/day17.txt new file mode 100644 index 0000000..2440164 --- /dev/null +++ b/input/day17.txt @@ -0,0 +1,141 @@ +112122213334114113231321113242442532114231435134313123422531466634524341365435226414266142534414424454223435252235121122412212321113333331322 +223232213233241232223442321443443213241415425134452545521652444356235262253644142626141551655514435312312325445125353434124143233211232113333 +211213214441123212122221154421231255125552335213135145221152221555311336145563141322415243442545415433321515514324222342443413124234411332123 +131313334321312411414211223544553144245344433412164431622456356541225525241612614244464345425154453425541313132514552342123141432344113233321 +111113112343343311214243333415452215523324216126534451321114612342532211114446546111426124124133263133355511145531124154124223433321232342331 +221213233112134144413533333233441132153566413136335636542312215222534622666142354151643636433123324415532323355522333345421134232212243234332 +213124343224222223453324145323112233253615131241326436323652613243124452252556561345215556214163546142251544341332435552341312311341311242433 +232442112421414214235235535351225513632421241545535454262653122656213436336213253565361263333423411454622122124255111454533244122222332243112 +124342241222442141523553131335425436256264245131616344414622444323334661544566324434213252644342151315522665212353444312155325343224134223143 +113121421144241234221422334223321664536152461265363514423421141627531116552661735133255163221316232553164131254221455144312333342133312324234 +223432424242434452112232342511562316535244164413161633666175562412475177464412157124654545451533231514162162534455455154343315513334234133423 +432443311111134434532153445151333416134532661123445463436425756534173755562221337751133141134233543454326234111642214531541223424344433132324 +141431222332434541355553522346261125611116555544265116475145413757247625144415741445145636351653211116422641315241452541121545255324431444311 +221214341124323143353552332435256554655566364623732257151431113223726747124526431162317573261463562614534211222354625434552515111451123343333 +113413432244251354425335233316443432621432141342641274641241223631514614324372743726752436355566121515553631416333523525413142232351113132214 +121424124215414531434215565214314325121452322537256554252656464173135421422213247416723532755135163213662125156532414411515352451154331213411 +433413221512223555141245335413113266426541712322333573342245651321116443514346475312473232533324224542412312334622423444244251353232154421421 +441313143341555322135314261224536116411571453471626113114325633616554343344734736654674331536223135425161425663665241534441152155145521124321 +313434155451145555521352512231526632411424122612262166342451461543251665133652546121661463626353126646125546655624255256425243514143424322421 +214133533545351442336114462114436664553553364141514631662747162314755263785436712515643167172757461327675265116163544421256513552321411242114 +234244434234433223513151266262315532163634612453471235252112422636575445626464264664755147361144133516633433115414114556666624315155541411144 +213122135421411133636161216542616141216711613272221641337352468367222337365685762673527335551556314275715541124636631345322121334121414543344 +331412322151512132633113554245514442557375223174627721256332578558834826365585227873457541653137751123251632563115663126322312345152333112411 +233322523333314526643621225434327374156742647737367734268382644753476883753563867433834828646557444166256374126352555325143525444113344315423 +313244221314354216454166632416477244532735636662647378334784284287764828563888552657323537267263566441267547777331243113236216214521443154234 +121334252152341432265646423317156713347454314726282383522585764278683342278634528375544883844363673526566144451741246332566525354514211525215 +233123131453511451154635534463531457662465163674385887633546488537863387775773644347363643383233243221455553446214266266365545236544241224454 +135133543152166422162652446136237363271215335475834758565272438874554585838645336675686368367662254561156235442774322532614223541425554354211 +135114443351266246234124332164463452714537353565722645268825223462334684527468773725253385584437388753666167717616367422136534464124221255154 +143211552113431335246161252751442755515356873735466733762642822643376633865835866258383423734766223443517715432172173226565666612135421142512 +522124444145322162436434367444547637513588464788458227765557564677845354889774867886653262846832288773764622443272431516151353613122434523142 +425135524366644246446414436625731112273572384237436586752722855596948968795785539548768822337823375835734764733563747665123222464552252454111 +141553212252525124636317752717416337578526824658568358333334975775535333336455453785766472827663336372238237746663222161666543555452335141524 +214425312565511541216241255761553545357572677756658483665857939373446447969897479456949734334458244473527726126577716551626364164343434541342 +215454511255333546211373156576753767746766243337277873455396879559858884569847593656346585362575654637328852454144255442446263233546255241532 +431315542114461265413353242417763654728735538858349557834586899333733555998884679743575576665365425435885333416351362371556142543446624325311 +441132211244444552527276456342447554548445886353434456936496689543479958679987675694674838689466724247828377642262637431716153545436542222424 +242431331426553316262677722567567677758462448438375744636357437637737547354954866633357437376596228352258264236124256266764226225656131241355 +323121453453535426317775721632377827877678522767568893488453445548375969395876375743848879797757958435424472572353376162227161161335141552343 +525113361336514413264142455647544454374577823689563368647958663483543563484633534964833647644858732558882683745555517251673646445331335215333 +332436116534513543243245763415468232724446234767873689843947686869756485746936837748455389455984597564635326653622427733567742315266623124552 +321423364544664443611566475357636824527336233645598757369976493899966746787565875656384557859777878343528563833325741753457572633216533413341 +232444445132316614542765745137364645458264896547383938669684987856485459845759546684539565534845435684545657526432633116756767425333554426214 +312323366525255545664713421226262764385826634944976757986569549474696494754644995844646943559577964479683337226885657311316544114315326122433 +432532261413643465625757211268874848228698443668399465987788645575689745947548565755485465397495575674665353433655762416747632473364142144533 +442666223614262643462522226486488384463454565653955484767795848678845686984855849668455463735654889387766447766255583147153577766455625146515 +241656226263364273264413544437366474543559376577358375487669468644447957458647565698648497334734879767677482242367842253724113176113362532152 +331356316444161717624323347727385437475466598344693557544648485864547555596559754777687957685885645983875974733855482347552531261634511313351 +346623463124144563734426275453557883835397748845946966745975469668855947499944995798945597997346576885837964343463786334126561551663634413422 +346546632246644627255213836455427753749333383937667887769757654445966667775646585769787768787488787799367848673688335233117135345526131136153 +321521223351171657635676266387762764834738436664947975977864775568997766948589644675467698649685464757489545333883665233256774267421126442615 +113454463613757576722122785286836774833494358636946857547476769968595989558574578979448756994784974836736975365462734784434474513711256544423 +261361441535263216375222433226638435468558537948779999578855958996578965598656769984659644867675987896596384385652246536756523417615316524345 +243161145311157631736252633763367473994557635765984548644954495699656565865587897648896679588968478774847436654827333666754351552634653446133 +226135365151451336224542858636357589584836469845777988469898676898678586599888575995968875447865993939376459987547637838371633417553455165351 +542126162221773443661768253224227688939876348997899659665468957985655686878579787698796575897755989888475469336685447847814527623532565436416 +212166364431161235425264647844388856793486848588958974548786599588595679767685676579784959898484675386649958763773333235646732553366114621363 +465356463267563471141522627635633838797535785459858698678766597859687965898965666756869748769445499684347889436828482737675731247144546346352 +464452162137337235656872758766255598678375965555784687675588769566598558769566595556797845998858774686795836447277575442643117266635136161643 +315236316177133415512254444436723883464443356589575656966676997886599769979597886585865794557747498864884835343375623764887347373117765541634 +543345565165721223367426422848438335784567747859894978569655867996757859699785555565899597877564766658794499743854575825264575313474763653226 +223464154576341265348276273438888473567993865478788769859799979969799787778957595579669695758458448698497333976974768563237545415713716614432 +526422665152337417376628444748664768456684687589957675865575575978999899798798895669985997889666757779438875598354344685556177743735626664313 +422466143331242541215655483447574359868594865568857985988785786758968767667987667688995859674754584744386576566825676825446133156426211325144 +616312315445772563568428468343494898673549685477858678855859576996799776676988989576855967894556694944775869596967632653456753216516325236265 +666654466273114135457582352222939756993646866879784557779765866776877899676968799678598569574487494799779674439773248573873773514243776563141 +646364141335745273254427368334873939835375794956585858689768869896987966886969889967697877578445749766985846845334486384763726635173455311633 +523556335277231462634722574533767497484597789547985699999765887799799977689687796579988897886578856746886867974944356522882725316674455563414 +116613413717173656388858823635379353844846956765756567758859958899699696986669767975996755866487445664694763789547865568347276743744163156154 +215356433444157176447344872278783673778596758567488565767957788966867899898687966695885557688956974965655397367468286572642264415742536431213 +354345565631277522377584543663753534935878564554859596575866566969987787768679769789867986657864644689563564596862833262674361644525265452154 +365245225411532566167624768678567473848757668785897585867997687696897999987696867689878585569968457655795795769677374587537446765626756416613 +654345135377622536582857544283864388873695585888788586858589768798686668977697866876569886985859654574485638466892747766245571245512351444266 +142455453364453354645883536386377533856985875557544666579568586697776896979799668795899998884545464858559434759642253466336835515614225134241 +166111335622635235382757544483453446779865995546685886597577897897886879997988789656559779694544849958433859749678585854526444636262272322151 +114123615542731734345363748253393343788459575898785876889887759866986998686866799995557677674769444777449778799487233856547565647415251555613 +225655412425222154528887828265459967598679846458787686577875979967987899696976689975556958788888957645833848879363487267375572522573754355214 +236113423313264417166673637432538857534768445878846565887567778998889766996688668997559578698655666548966788346996387466287511212346363111546 +246452426362535412434734877827987759568349697554884498877569698696697688679967776788867568586447648946473376743443326848223344317536552656551 +363262151626241673313682523373766868637935987748764459965566968797969676767866858998976779598567744496464763834933652652285122741473165662252 +141131526142762255724844244565248553995599885586564669659758667779998679768985997989976667764957468756878455785572467485247217651126563562455 +454316423641632142335572574336483878586959987448576455887995997657585867886699769789589567586784596499537895577926373466353764335464216546614 +112563253263662275723422683745849475663636586667585648757856899757689997976669575896866555759894856495984549759652785836232277444135525656565 +151146312233731235567683772855767685549774645869975547789869668665596857898569695759595698494896567589476747873425327267251316343461142634624 +113412135417256533734554576432276369847883699866758876457557675657756665756959879668985778456685788836697435775527237725385741313113213136136 +226464154124725656146657853278827553539444565748486699545699787657966768887676669589597476578788864355846969536282253285446355142577144454553 +311625513563634244276562467363762458744946859697584549785685558767956698687556986779969847454965647477564974668577578356633156776235154624415 +561312322127427517227683337578533785985343389586665554478568588657555779565986889995987557874486879476949833342723582358356147161347223642445 +142434644167621215241443466466565953634859966476585944489869988998567979776575698676659566478455784576737658935678687457467662242112433522115 +163462265125631445715772844427478846986598884646996997679495585677765987975858998878965877967856566699887383878456787685562262374546512426365 +361132545144715117335722483458665785767956544354999949479474475887976777965765958877556856579868956637857483376632742886555242224775364114335 +243114541463557315742218272865587239786849337735747976797759559976565965795568578579947654869644699836374736346566826385645163654613514412545 +454251352263426736264511474636588585849435397368577456996969588795677756545854645944964545459485874685569349342835674773127525314211423644552 +242532214563433774525353425644764782587584475648957946754885646498659968649466657678764969464667884997754843657434547567233377627331411466152 +424261164452251233542157535362337422236897757385959444756787876967495545778598678545797649487937974367447327665772782637231123771231236314444 +515333532554441217132351454364243555453754889336963656799449585659855949465676765845576967454998667958795833273725463715333535216153632232631 +323653653663135417725772243453686377733868439784777765446647897447484655964677548677957878838594468553433542737786744533543511156543261115212 +314354615336445277161562753758888632877858536933363796976477946658899998858664676744864465597776438993554862358426232251747116756556622335211 +224326523214316315365567252263738265538478658853476636698574696676574455594454755478566458355653334745728683667882725516742463335223461362554 +314321255311115543233214175443238745634774535759554735596357966846887769548485857786736944595655348554283587374434253554533432521351436626653 +251523263446646635712631434244685648455672698773346549593393548948967459856768685453776593988693545367243675434646373437732253346432236561211 +514414556455426446424517712777688337787886756936385638444945374987997777484457644789963579396768536784266555347745755734575433353616566636125 +341442461553616515152114457451274538274432425355655376745568387986578777555439793677558968596979849656756367788367617324343355146512232613155 +451312625663366356331413344567262832435478573885778985935593968796946796855783375339986637865787386876858332353422311323477475535531631554325 +555535433215113453162744225317474765772773287267679555664984633484767653866876487973489333499399733384372472562614345313512343441226222625453 +134323443422151164266762657416335254525855533627387447637339976347633759693383574677544756767474533676542385827355547427776445634421224311543 +435451426143434644454413441321634623866587858343599978369473746739655469786988388393779839773433228626478324761343772471174312266655616233341 +214451141526326626612633442633654645335867755286855346495766357576868967978963587459555756596476642628527625763767277135543543256115643131512 +123212413143634235143642117554612458282588875582543458775836863786445879896888734739878843488566865372365232754771556766521461436242325435434 +314233354152665621655153572764332535454672752628346524438648675858549467886376396693949345274522842326684733315623412521264424231124153544435 +554135154441514551543522637255534643368454536376834673635588465766357573859979838789935582276642432344458727516723736635626555324225111544114 +525343313116145613264313626473374515754364374877556486222727796668887944387975364675282622578246436473467566567324323644424665356222513243251 +352145411416251342363636121621276145164435466356646777633878785285839734683434436576773442825766377586742337726314312245332246131515214343525 +411153243354466432166256322112413463262312346674238555637277472768844684438453444682456258678886743473461572525526515713623452225331234551544 +214252522333566532311514661467135411376421456832756685768664764463464676875367562354786635638736664261376641212724765131623153465635355553332 +214311541222124266346613631213231615413373744874576427582536544482285738646572838275738656877727284537122167637351556554162515123232312515255 +344234152531331666331424646371474716677335417825367237526254544568262443223278667376488622345584332242615461544126414313536612532523251351412 +244441541231313231623634265666645251354155351353364653254822874744356677326454455587877274746725556157173577535271154454651422121455412123334 +444423555552533134251134545546524261672543466167144785557575372774256257786234663348274247487232313736245273444114342455651213153215124451522 +424235123244352114354133141226524577245146413271312266534886845222748584664484667735467747763147124165572112476512151411662151333131435331234 +441231421452513124245654613435436743711751721346167231663684332846548846735723855276458443254666543467514553172455326424353433144111455335324 +321242321244525315164331255323336223136624645164227454347367254562688587874275746787345361454562331416355475656466333354415421531121122554422 +224112254351245222534522242253551525175745126754732226213665123724334522573243565527514746164444223476227754153462142353644143522332223234334 +332322515133214141522643645363424163427156665565317662637525352635365274443472676533131352212536671144714163665565251663316251542352143423422 +432433422325353224421334464435215222437136173637131546633213744522122614145437423243456753173714337574557346165451463114454151235232553412414 +413123234525235142223141562661646451524125243571165223263374632672565723354135714564746644251135174322543131162323355255515533111551432422133 +242442431514515344545215552641165651554646264636313433656356413636342255666265574727452272546551631252355623334235114422425155232245153314224 +431433434314524114543543532555621254623334667361242744546316327671552375621361142252766135134431175645241333634311435651221521443453344134231 +411444223334455315351214145513113133134426232616747561473575561172476716457177475612674732411377534342435633416264465153342345222211433122212 +321113244431341555121212444546643562141424556113255327445344445624726766354156342312675156633713511315563532311163461342123315431554421412321 +124311432212244442522353422134332444612314255526155553332667175135264134174412426763267627272344256226156536525244244331411113141133413113433 +133133214214445143123215233434623146563514611356435543211273647473565127657144764541613452333345263535626314114554523334424314442314411444423 +143344322341314112553114345545132255233416546133633221253246241526276124126314765421564432622211461632326412416213142152341522553423223132111 +122421233212214351113253432242223144331442466145551626631662355755374756462133124442264451516441245334132462134523223441545553114422142133334 +133431211224134334112434322412454341125616362131644625246115242615314331614324423162462563154624332634561613545451323234534414443414332321443 +311424123331311414423153433545414512563145366263254464653425211664355456162355512552665342432164532655454461342512555333215434342321421121343 +221132412144432132224253322534451325325121436131114354623121166464434446366541142625524554662234654531365323153131125152222342412144314313332 +211213424114344343432524145534213543534233642253644462635534341462666125141232521234166344431635622341132441552122444315522241244234241434113 +121221444111343131433135153533121134345312123152656155343563142155266664666565134642132434545145326334421115322243252455113322141341131432213 +211121222313331244411335525513412252235422253253356654655133364333641616114266625352332235433541125143555112514152151151212112423144412331213 +321132114324214421224442245421251324255131123132336164436334161523555436463354441261613114142623515341112345415442434312244224122422242322312 diff --git a/input/day18.txt b/input/day18.txt new file mode 100644 index 0000000..8c98512 --- /dev/null +++ b/input/day18.txt @@ -0,0 +1,602 @@ +L 4 (#6f81b2) +D 5 (#295ca1) +L 2 (#51f302) +D 6 (#295ca3) +L 11 (#604112) +U 4 (#711a63) +L 2 (#113be0) +U 7 (#6d3273) +L 7 (#2180d0) +U 2 (#51c613) +L 10 (#0e0770) +U 2 (#10e181) +L 3 (#485450) +U 10 (#83df31) +L 3 (#1ea290) +U 4 (#235d31) +L 2 (#09ca50) +U 6 (#06daa1) +L 6 (#703070) +U 2 (#3c56a3) +L 3 (#20af60) +U 4 (#152273) +L 6 (#880cb2) +U 5 (#451b63) +L 3 (#880cb0) +U 5 (#48c2b3) +R 4 (#397f70) +U 4 (#069351) +R 4 (#0fe520) +U 10 (#7f2111) +R 4 (#0fe522) +D 8 (#1d4c21) +R 2 (#4a1650) +D 6 (#3966e3) +R 5 (#00cba0) +U 7 (#212d93) +R 8 (#273670) +U 3 (#6c6c51) +R 7 (#1bae00) +U 9 (#1053e1) +R 5 (#4d2030) +U 2 (#7cc033) +R 6 (#1659d0) +U 4 (#447301) +R 5 (#611880) +U 11 (#25c2b1) +R 5 (#0ed680) +U 5 (#7b67d1) +R 2 (#0ed682) +U 7 (#092ab1) +R 5 (#4eb230) +U 3 (#559ba3) +L 5 (#103b62) +U 7 (#40fb43) +R 5 (#103b60) +U 9 (#583153) +R 4 (#4cc440) +D 6 (#4c2dd3) +R 7 (#02e430) +U 7 (#2545d3) +R 3 (#5edcf0) +U 3 (#79e7f3) +R 5 (#10ccc0) +D 10 (#6d8b11) +R 3 (#3f7ce0) +D 3 (#240201) +R 6 (#23cec0) +D 5 (#59ce81) +L 6 (#370b30) +D 4 (#104291) +L 9 (#320380) +U 4 (#458441) +L 6 (#9263f2) +D 6 (#190861) +L 3 (#9263f0) +D 6 (#444301) +R 5 (#289070) +D 3 (#096fd1) +R 9 (#79ee30) +D 6 (#22e183) +L 9 (#08b990) +D 6 (#895df3) +R 5 (#164c60) +D 4 (#143041) +R 4 (#4d7220) +D 5 (#7c1e61) +R 5 (#1ad4f0) +U 5 (#0fc2e1) +R 6 (#684712) +D 8 (#012521) +R 3 (#183810) +D 6 (#387cf1) +L 4 (#070d90) +D 6 (#1cdc61) +L 6 (#3345b0) +U 7 (#46fa61) +L 4 (#0c1060) +D 7 (#38a731) +L 5 (#88f420) +U 6 (#2aae11) +L 3 (#4aee92) +U 4 (#2f2bc1) +L 5 (#2dd012) +D 4 (#2f2bc3) +L 3 (#4f8b92) +D 6 (#0637f1) +L 8 (#3fa330) +D 9 (#433fa1) +L 6 (#4ecdf0) +D 8 (#1e3aa1) +L 6 (#847120) +D 7 (#4673c3) +R 4 (#014b10) +D 7 (#836133) +R 8 (#259bd0) +D 4 (#155de3) +R 7 (#685880) +D 4 (#0c3403) +R 6 (#45ca80) +U 6 (#5d3e63) +R 6 (#3314b2) +U 5 (#210823) +R 7 (#3c6db2) +U 4 (#65ddf3) +R 8 (#6f8260) +D 5 (#42dde3) +R 4 (#037972) +D 8 (#24cd91) +R 4 (#5c2e72) +U 3 (#24cd93) +R 4 (#4e7b22) +U 9 (#066b33) +R 2 (#040360) +U 2 (#3d4c13) +R 5 (#8465c0) +U 5 (#2c64a3) +R 2 (#14ad02) +U 6 (#356233) +L 5 (#4ca262) +U 6 (#4acd83) +R 5 (#202ce2) +U 10 (#4579b3) +R 3 (#3fe2f2) +D 5 (#205603) +R 4 (#3319b2) +D 4 (#692d23) +R 5 (#2c7bd2) +D 5 (#68d661) +L 5 (#3742b2) +D 5 (#0fe0c1) +R 5 (#452892) +D 8 (#78b723) +R 3 (#37a0d2) +U 14 (#3768e3) +R 4 (#270100) +D 2 (#38ff13) +R 6 (#3dcc72) +D 3 (#2e1723) +L 6 (#3dcc70) +D 6 (#2cdba3) +R 8 (#4cdfd0) +D 5 (#17ca31) +L 8 (#419790) +D 5 (#035321) +R 6 (#397212) +D 5 (#914b21) +R 7 (#397210) +U 3 (#14f231) +R 5 (#5a4a50) +U 2 (#34d9c3) +R 9 (#320cf2) +U 6 (#626173) +L 6 (#320cf0) +U 2 (#2a1f73) +L 8 (#3a33c0) +U 5 (#2ba8e1) +R 2 (#68d670) +U 8 (#528601) +R 5 (#0ae4b0) +U 2 (#15c2f1) +R 5 (#02a230) +U 10 (#6338d3) +R 6 (#078062) +D 4 (#72c223) +R 2 (#5846a2) +D 5 (#39cd03) +R 11 (#464952) +U 3 (#660903) +R 7 (#34bd02) +U 9 (#2a59c3) +R 7 (#751042) +U 8 (#562a93) +R 7 (#0a81a2) +U 4 (#4d15f3) +R 6 (#67cc92) +U 6 (#4d15f1) +L 3 (#723672) +U 6 (#0566d1) +L 6 (#6cf2f2) +U 2 (#582a11) +L 4 (#74a212) +U 11 (#103141) +R 6 (#287b52) +U 4 (#84f181) +R 7 (#2eb650) +D 8 (#903541) +R 8 (#2eb652) +D 3 (#103391) +R 3 (#157392) +D 3 (#0789b3) +R 7 (#1d07a2) +D 6 (#61e393) +R 4 (#7881d2) +D 2 (#3f5893) +R 7 (#286722) +D 6 (#381f83) +R 8 (#4a7da2) +D 2 (#463143) +R 4 (#0b4032) +D 7 (#7e9143) +L 6 (#355d82) +D 2 (#02aae3) +L 4 (#11bbe2) +U 4 (#67fa03) +L 10 (#11bbe0) +D 4 (#3e2733) +L 5 (#407c92) +D 2 (#04db23) +L 5 (#386842) +D 8 (#4d5491) +R 6 (#4e3752) +D 4 (#4d5493) +R 6 (#409f12) +U 7 (#873c01) +R 7 (#4d0672) +U 2 (#873c03) +R 3 (#238232) +D 5 (#2ec8d3) +L 6 (#1a84c0) +D 6 (#4e0e23) +R 6 (#207ac0) +D 3 (#234f73) +R 6 (#257662) +D 5 (#665b03) +L 9 (#257660) +D 3 (#1154a3) +L 3 (#1a2570) +D 7 (#08f133) +R 6 (#7489d0) +D 11 (#0d29d1) +R 4 (#3b6d72) +U 5 (#5ad2a1) +R 8 (#4f1132) +U 5 (#021471) +R 4 (#12f0e0) +U 2 (#1b0d21) +R 4 (#4a05e0) +U 8 (#4d8d53) +R 4 (#69d810) +U 3 (#4d8d51) +R 5 (#168f40) +U 3 (#3b30b1) +R 8 (#5dc4b2) +U 8 (#289f01) +L 10 (#7f9962) +U 7 (#04d161) +L 4 (#8a7ea0) +U 4 (#043f51) +L 3 (#7d8e00) +U 3 (#1542d3) +R 8 (#13a2b0) +U 9 (#50e003) +L 6 (#105580) +U 4 (#159251) +L 11 (#536490) +U 3 (#69cae1) +R 10 (#1d0b70) +U 2 (#27dc61) +R 3 (#2e41c0) +U 6 (#01a1a1) +R 4 (#8dfc90) +U 7 (#2c9351) +L 8 (#166b42) +U 3 (#6e2221) +L 4 (#5b1e42) +U 7 (#6e2223) +L 5 (#3232c2) +U 4 (#520c71) +R 9 (#2d1100) +U 9 (#45aaa1) +R 8 (#76ab40) +D 8 (#2ca591) +R 8 (#8dfc92) +D 7 (#21f501) +R 6 (#49ca60) +D 8 (#887f81) +R 9 (#48c220) +D 3 (#887f83) +L 9 (#1d4540) +D 7 (#64f8f3) +R 6 (#29f2f0) +D 3 (#3672b3) +R 4 (#5b6a30) +D 9 (#47a913) +R 3 (#5b6a32) +D 4 (#1c77c3) +R 4 (#29f2f2) +U 13 (#14fa23) +R 5 (#56ead0) +D 5 (#258123) +R 11 (#6e74d0) +D 5 (#258143) +R 2 (#1127e0) +D 4 (#536d63) +R 4 (#7f9cb2) +D 2 (#08c9d3) +R 12 (#11c220) +D 4 (#0d4613) +R 4 (#1117c0) +U 6 (#63d6e3) +R 7 (#079410) +D 6 (#140c73) +R 4 (#518310) +D 2 (#2f5813) +R 8 (#3d38b0) +D 8 (#33bca3) +R 4 (#2fc890) +D 3 (#199091) +R 4 (#3c9a40) +D 6 (#199093) +L 12 (#671c60) +D 6 (#6314b1) +L 3 (#0ddda0) +D 6 (#2625c1) +L 8 (#67eb80) +D 4 (#5f03a1) +L 4 (#402810) +D 6 (#6622d1) +L 6 (#3c8210) +D 5 (#1f1501) +L 4 (#386720) +U 4 (#5e9f81) +L 3 (#4658b0) +U 7 (#50aee1) +L 6 (#3b36b0) +U 4 (#2d3bf1) +L 6 (#485710) +D 7 (#5b0341) +L 2 (#826220) +D 5 (#299251) +L 7 (#6d7080) +D 4 (#20d6f1) +L 7 (#547000) +D 4 (#7ded11) +R 9 (#19bc70) +D 3 (#119381) +R 5 (#28b900) +D 6 (#2a6a61) +L 6 (#11d062) +D 6 (#6de691) +L 8 (#11d060) +U 4 (#20cb01) +L 3 (#44ffd0) +U 12 (#5555e3) +L 5 (#567c32) +U 2 (#24a913) +L 3 (#567c30) +D 5 (#3f1d03) +L 8 (#6cc840) +D 2 (#4f6121) +L 4 (#427f10) +D 5 (#662b11) +R 12 (#274300) +D 3 (#4d3db3) +L 5 (#8269d0) +D 3 (#0a29d3) +L 4 (#8269d2) +D 4 (#4cad33) +R 9 (#5897b0) +D 7 (#07e1b1) +R 3 (#3b3d00) +D 4 (#502e91) +R 8 (#2afc70) +D 5 (#4c0471) +L 4 (#0abae0) +D 2 (#7d3af1) +L 9 (#085c40) +D 3 (#294e31) +L 3 (#5af032) +D 6 (#15b561) +R 6 (#3d5552) +D 4 (#538691) +R 5 (#1ef0e2) +U 4 (#4ad471) +R 5 (#365c92) +D 3 (#0b4651) +R 3 (#165bf2) +D 6 (#7969a1) +R 5 (#258320) +U 6 (#3eac11) +R 4 (#7f1160) +U 6 (#3bbb51) +R 2 (#2d4ac0) +U 8 (#7a6763) +R 8 (#320fa0) +U 5 (#497d21) +R 3 (#4affb0) +U 11 (#60bfa1) +R 7 (#4affb2) +D 4 (#058041) +R 9 (#085c42) +D 6 (#7b9b61) +R 7 (#1b6382) +D 7 (#69d101) +R 8 (#08bdd2) +D 3 (#7923f1) +L 5 (#0c8052) +D 12 (#047191) +L 6 (#217442) +D 2 (#12c433) +L 8 (#6a7582) +D 4 (#5c3823) +L 8 (#5fd572) +D 2 (#1b1723) +L 6 (#5fd570) +D 4 (#5d5313) +L 3 (#3443a2) +D 6 (#3865d1) +L 8 (#5d30a2) +D 5 (#528a23) +R 9 (#64c9c2) +D 2 (#7b78e3) +R 6 (#31c952) +U 12 (#476ac3) +R 6 (#57aeb2) +D 7 (#537b03) +R 2 (#1447f2) +D 5 (#582521) +R 5 (#12d112) +D 7 (#4424c1) +L 9 (#5c3792) +D 7 (#53d2c1) +L 3 (#5c3790) +D 10 (#519051) +L 7 (#218392) +U 10 (#273bd1) +L 6 (#2d6cd2) +D 5 (#4ec1d3) +L 3 (#8492b2) +D 5 (#4ec1d1) +L 3 (#171a22) +D 3 (#0002d1) +L 8 (#634852) +U 2 (#0ee1d1) +L 6 (#3d2eb2) +U 3 (#04ea01) +R 4 (#607f20) +U 9 (#7e4251) +R 2 (#607f22) +U 4 (#0fa471) +R 3 (#2d0682) +U 12 (#4fbb41) +L 3 (#005e72) +U 6 (#4c5b61) +L 6 (#7f5b72) +U 10 (#33e641) +L 7 (#4240a2) +D 3 (#3c80b1) +L 4 (#24d372) +D 9 (#3298d1) +L 6 (#055d42) +D 4 (#41a9c3) +L 6 (#4ace92) +D 3 (#41a9c1) +L 5 (#49d532) +D 8 (#2d69e1) +L 5 (#11cb42) +D 9 (#6343c1) +L 5 (#5aec92) +U 8 (#727291) +L 7 (#575b02) +U 8 (#2d9493) +L 5 (#29b0e2) +U 5 (#773de3) +L 6 (#448ef2) +U 4 (#30b9c3) +L 6 (#453232) +U 4 (#48bc11) +L 2 (#3e79d2) +U 11 (#7ccff1) +L 3 (#5516d2) +D 7 (#3596c1) +L 8 (#0a44d2) +D 2 (#363c41) +L 6 (#83a172) +D 4 (#23f181) +L 11 (#8de640) +D 4 (#312f31) +L 6 (#7ace72) +D 4 (#2dc461) +L 6 (#1a77a2) +D 7 (#215151) +L 6 (#8a6f80) +D 3 (#41f301) +R 3 (#0c6ef0) +D 7 (#41f303) +R 9 (#4b0960) +D 6 (#5ab701) +R 12 (#46eee0) +D 5 (#0cf881) +R 5 (#4175a2) +D 8 (#08d7b1) +L 6 (#576f32) +U 4 (#5b2e81) +L 3 (#1609b2) +D 4 (#548b91) +L 7 (#653f72) +D 3 (#503443) +R 5 (#42aae2) +D 5 (#5f85d3) +R 5 (#0efc42) +D 3 (#023203) +R 7 (#4ce242) +D 3 (#914443) +R 5 (#379b32) +D 8 (#914441) +L 7 (#23df42) +D 3 (#5f0713) +L 10 (#181532) +D 3 (#0caa31) +L 5 (#25dc72) +D 7 (#1f7ef3) +L 6 (#43f6d2) +D 3 (#1f7ef1) +L 10 (#39ee62) +U 6 (#0caa33) +L 3 (#729962) +U 8 (#08e3b3) +L 9 (#4abe22) +U 6 (#11eca3) +L 9 (#251700) +U 4 (#677653) +L 3 (#75e930) +U 4 (#5a9583) +L 6 (#64e040) +U 7 (#0d2d03) +R 9 (#723e00) +U 9 (#44b093) +L 6 (#070fe0) +U 2 (#42d003) +L 12 (#5dfdd0) +U 6 (#16e5d3) +L 4 (#4a5ee0) +U 4 (#5c7403) +L 5 (#623452) +U 9 (#653f33) +L 7 (#0983c2) +U 10 (#2b6293) +R 5 (#1eba12) +U 12 (#3f8d01) +R 3 (#516e32) +D 9 (#5114c1) +R 8 (#257082) +D 3 (#3c6e33) +R 7 (#541502) +U 6 (#502401) +R 5 (#3d0322) +U 6 (#4eec41) +R 6 (#74a502) +U 8 (#3a4fc3) +L 3 (#29c2f2) +U 3 (#572513) +L 11 (#780f92) +U 4 (#0d9b73) +L 2 (#321ee2) +U 3 (#6d7933) +L 5 (#614562) +U 6 (#4bdbd3) +L 12 (#614560) +U 3 (#3facd3) +L 4 (#4c7bd0) +D 8 (#58d343) +L 4 (#7d48b0) +D 4 (#05c741) +L 4 (#2d8730) +U 4 (#6964f1) +L 4 (#68bdd0) +U 8 (#780801) +L 8 (#3bbd00) +U 4 (#0296e1) +L 6 (#0d0280) +U 3 (#3094e3) +L 8 (#2581a0) +U 8 (#6b7e33) +L 5 (#2581a2) +U 3 (#4db803) +L 7 (#30e580) +U 5 (#4f8f73) +L 2 (#6ec3c2) +U 8 (#340063) +L 4 (#1428b2) +U 3 (#4810c3) diff --git a/input/day19.txt b/input/day19.txt new file mode 100644 index 0000000..055652e --- /dev/null +++ b/input/day19.txt @@ -0,0 +1,733 @@ +vvr{a>520:jq,s<3691:R,a>325:A,R} +dmg{s<1730:A,x<3350:R,R} +ctv{s<3757:R,R} +xhh{a<3542:A,A} +cpx{m<1847:A,R} +qqg{a<911:nf,lpf} +mnr{a>1914:A,x>752:A,A} +ktx{m<1153:R,A} +mkz{a>2959:A,a<2378:rlr,R} +br{x>2184:A,s>3693:A,s>3530:R,A} +fpk{a<2465:A,a>2524:A,A} +ffs{a>536:A,a>328:A,s>3058:R,R} +zcl{m>2554:pz,a>2167:gr,qs} +lpf{a>1643:hc,x>3626:xxp,mth} +vl{x>2958:R,R} +nrs{m>2481:R,x>3117:A,m<1978:R,R} +sv{m<1749:R,rl} +tv{x<219:R,a<1429:A,m<2884:R,A} +nl{m>1827:A,m>1345:A,x>2928:A,R} +vj{x>439:A,s<2318:A,a<806:A,R} +kd{s>767:jhv,x<1090:bk,A} +ts{s<3148:rxp,a>1365:lr,bkt} +bl{m<2736:A,s<571:R,dv} +brp{a<923:R,a<1279:R,a<1574:A,R} +bgt{a<1575:R,s<3923:fbv,s<3953:A,pdj} +djn{s>322:A,m<1056:A,a<1988:A,A} +rqq{s<3130:A,m<2434:A,A} +lz{x>3622:A,x>3296:qt,s>3010:R,A} +pts{x>1771:R,R} +kpp{s>1217:A,s<1204:R,R} +bnq{s>3121:A,x>490:A,a>2141:R,A} +hxf{s>2885:R,a>1520:A,s>2880:A,A} +khd{s>3265:bc,a<1211:ffs,R} +gv{m>3417:A,a>2938:R,m<3354:A,R} +lk{m<2377:xk,s<3132:R,A} +cs{s<960:A,x>3655:R,R} +mh{a>1468:A,s>2418:R,x<508:vj,vgr} +cnt{x<766:R,x>1060:R,A} +zt{a>3624:R,x<1504:R,s>271:A,A} +fpt{m<1199:bnq,x<958:R,x<1153:A,mrg} +jkq{a>1783:qnp,a>1626:A,R} +fnc{x<3093:fzx,x>3571:cp,m<3233:zpz,xxl} +kmg{m<1640:lvj,x>2199:xv,R} +lkm{m>722:xbm,R} +pgd{s<2128:brp,jj} +shm{m>919:R,s<3189:R,R} +xfr{m>761:R,s>2748:A,m>323:A,R} +rgl{a<1202:R,R} +qgd{a<746:hzp,rgl} +vkj{m<2086:R,x>850:A,a>3710:R,R} +cm{s<1657:R,R} +lvj{s>2173:R,a>747:R,A} +vz{a<2716:A,R} +nsm{m<2126:A,a>1310:A,x>2771:A,A} +pk{x>2292:A,A} +jm{s<363:A,A} +hp{a>2641:trf,mh} +nlr{s>2969:A,x>1304:A,A} +hx{m<3078:R,R} +pjv{x>253:grc,x<97:R,x<193:A,hz} +xrb{x>3443:kn,A} +tx{a>1279:A,dcf} +qjb{m>1551:qfg,qrq} +ftr{s>2830:nmq,td} +jvn{s>3843:R,A} +gsz{s<2923:rfs,ts} +xhx{x<2340:lj,A} +gbn{m<882:A,A} +qvl{a>1697:hr,a<1466:A,a<1601:A,ll} +jh{m>173:R,s<564:A,s<797:A,R} +vgf{x>497:A,x>320:A,R} +lgk{a>3109:R,A} +lbx{x>1134:A,R} +nxp{s>840:A,R} +gkh{m<545:A,m>610:A,m>569:A,R} +zpz{x<3332:jk,m>2774:A,R} +sqt{x<399:R,m<3088:A,s<477:A,A} +mpf{a>3316:A,A} +ckv{m<3213:A,a<842:A,s<2396:A,A} +lpq{s<2685:A,A} +fg{m>3358:R,x>3763:A,R} +cf{a>1252:A,x>346:A,x>212:A,R} +bcv{s>3187:cxd,x>2785:R,x>2752:nsm,zn} +pq{x>2944:A,R} +vc{x>2389:cqz,m>1620:bd,bdr} +jgb{x<2002:A,R} +nfb{s<2319:A,a>3483:hj,m>1700:R,A} +zh{m<664:A,s<2311:A,A} +hrs{a<340:R,x>1096:A,R} +stl{a<1757:cfp,qrl} +lg{x<2142:R,m>1798:bx,x>3110:rg,A} +nrd{x<2026:qh,m>1735:mrk,pn} +cmk{s>292:A,A} +szf{a<996:A,x>1757:bqq,s<1243:R,A} +tg{a>989:A,s<936:R,s<1091:R,R} +ktl{x<2556:R,x<2639:A,R} +nb{m<3571:A,s>1051:R,R} +vx{a<2247:A,x<2460:A,a<2331:R,A} +in{s<2569:qj,csb} +rvc{m<1417:A,s>2822:A,m>3074:R,A} +hcv{a<3271:A,A} +blq{m<1523:mz,rq} +dvv{m<1558:rx,rn} +pdj{m>1764:R,s>3971:R,R} +tzf{s>3567:R,m<631:A,a<3273:R,R} +vvp{a<2271:nrc,m>2025:ls,a>3004:znl,ftr} +dx{s>3049:qdv,m>1362:hpq,m<759:A,xrl} +fgb{a>3186:pq,s>3045:A,rz} +zfr{s<3704:pg,a<1503:kkc,a>1606:rj,mcm} +hk{s<3670:A,a<2667:R,R} +vbs{m>2005:jgb,pts} +mmr{m>2322:R,m>1991:A,s>1195:A,R} +jsj{a<846:R,A} +gr{x>1637:A,m>1437:A,tzf} +smr{x>553:xkj,a>3828:pjv,s<2877:rvn,lk} +kkh{a<979:A,a<1290:R,m<3262:R,R} +rfs{s<2782:zfq,s>2869:rlj,vvp} +hld{m<2626:R,R} +pdr{s>3716:R,x<1984:A,R} +bpl{m>2642:R,m<2208:A,R} +rsb{s>2186:A,klj} +svh{m>1897:A,a<3228:A,s<2449:trr,A} +nvc{a>1611:sfr,A} +kx{x>637:A,x>614:A,A} +qh{x>1954:pdr,sl} +mr{x>2233:R,x>2163:A,R} +ndm{a<2304:R,A} +fb{m>2610:A,m>1344:A,A} +qm{m>2943:R,a>2109:R,R} +dv{a<678:A,R} +nbv{a<1299:R,m>2259:R,s>2404:A,R} +ls{a>2854:mpf,zqx} +xc{m>2101:R,s<2882:R,a>1165:A,R} +lct{m<2076:bs,s>2785:mkf,m>2855:A,bks} +dk{a<3506:A,A} +qmn{x>325:qf,a>449:kl,a<295:A,vm} +ncg{a<1018:lct,a<1371:rnd,x<2673:jkq,nvc} +zmq{m<2525:R,A} +thd{a>2757:gj,a<2405:qrn,m>2056:bmz,kr} +tts{m<3228:R,s>640:R,a>3171:A,A} +trr{a>3548:R,s<2437:R,R} +clc{s<2527:R,s>2549:A,A} +jtv{m<2950:A,s<210:R,R} +ghv{m>1136:xkd,s<1218:ql,m<502:gvn,szf} +jq{s<3727:A,m<1398:R,A} +ql{x<2601:lbx,dz} +rvn{x<189:vvb,hxn} +xx{x>2241:A,m>1897:A,R} +ccd{s<3621:A,R} +lts{s<3872:A,m>835:A,s<3931:R,A} +rn{s>925:R,R} +ngb{s<2880:A,R} +xxv{a<2094:A,s<2881:R,R} +kr{x>2351:A,s>258:R,a>2619:bdp,A} +mz{x<3454:fgb,zzp} +hd{a>2529:A,dmg} +hz{x>224:R,m<2084:R,A} +gh{m<971:A,m>1211:R,A} +jr{a>2700:R,m>1234:A,x<355:A,A} +jc{x<739:A,a<917:R,s<2457:ck,mnr} +bpj{x>330:rqq,R} +xfj{s<1260:ht,m<2092:jd,xhx} +bz{s<3823:A,R} +cxd{a<874:A,R} +bs{s>2688:A,m>1007:A,x<2651:A,R} +htn{m>977:R,a<2308:A,x<2327:A,A} +jhv{a>996:R,s<967:A,s<1075:R,A} +bcr{a<3147:ndm,tp} +pkj{m<2510:gbn,a>981:jjx,A} +zzp{s>2986:shm,x>3786:rpv,mb} +bc{s>3370:A,a<923:R,x>2579:R,A} +tj{x<2848:rb,s>1693:A,A} +fvl{s>1450:css,s>1274:fr,a>1541:ngh,rmz} +frc{m<2984:A,m<3157:sqt,tts} +lb{m>1612:A,A} +bp{m>2003:A,x>3015:cs,tg} +nnl{a<1000:R,s<3854:A,s>3945:A,R} +rl{m<3088:A,x<463:A,a>1631:A,R} +gvn{s>1250:A,s>1235:fhj,fqn} +rnf{m<733:R,x<1676:R,A} +cp{a<3134:fg,m>3460:A,kmc} +pd{s>637:vb,s<564:pt,R} +rz{x<3098:R,m>826:R,m<293:A,A} +zc{a>689:vmd,a<339:A,llk} +zl{s<3450:R,A} +rj{s<3855:A,m<1825:lcq,x>558:qn,R} +tp{a<3484:R,x>2024:R,a>3761:A,R} +jbz{m<3184:cnt,R} +fs{s<1772:A,m>908:nl,a>2631:A,A} +sfr{a>1871:A,a<1714:A,R} +lv{a>3338:A,s<314:R,x>2326:R,R} +hjj{m<1335:R,m>2001:R,a<2651:R,A} +sm{x>2614:R,m<621:A,A} +qdv{x<2058:R,R} +xsg{m>2409:qb,x<1022:bg,mgj} +vvb{x<121:A,m<1386:R,R} +szz{x>1786:xs,s<2260:stl,x<596:qg,zk} +sr{m>1474:A,gbk} +xxp{s<2328:A,x<3808:A,A} +fxk{s>3196:A,btj} +mgg{m>2309:R,a<2169:R,x<1003:jr,R} +rc{x>853:R,x>554:R,x<304:tk,A} +vzk{a>830:A,m<1128:kh,x>558:R,npn} +dd{x<2364:R,hk} +jvf{s<1220:kkh,m<3274:qgd,a>869:tx,dxb} +xn{a<1700:rjg,A} +vf{a>1341:A,s>3229:R,A} +dxb{m>3699:R,s<1248:R,m<3525:sml,A} +zd{s>1372:cbd,zc} +qb{x>1140:R,a>3588:R,a<3369:A,R} +ck{s>2389:R,x>753:A,m>2076:A,R} +bk{m<1112:A,x>422:A,x<254:R,A} +bdp{s>119:R,m<885:A,R} +xfq{m>1857:km,a<2650:rvk,m<1229:svp,fnm} +jjx{a<1105:R,A} +hh{x>2723:A,x>2324:R,R} +vxv{s<3855:A,a<1221:R,A} +hj{m<1924:A,A} +zj{a>2161:A,a<1948:mmr,a>2043:A,R} +lcq{m<760:A,R} +zmm{a>1990:vx,m>3237:nq,m<2768:R,zrk} +qrn{m>1714:qm,a>2144:htn,djn} +zk{a<2467:lkf,txv} +gsm{a>2592:sm,m<700:A,a>2099:R,R} +vhm{m>3185:R,m>2612:A,x<2721:R,R} +lss{a>1698:dd,ldr} +gf{a<589:ggp,a>940:xc,A} +qrl{a<2989:mgg,s>2068:rsb,x>881:xjq,cnz} +nz{x>640:zl,m<654:A,gh} +ljc{m<2348:xqn,m<3307:hvc,zpt} +ptz{a<1956:kmk,x>332:ks,dxr} +lj{s>1269:A,A} +rjr{a>1905:A,s<3610:A,R} +bkt{s<3288:xm,gkz} +jjq{s<2376:R,a<3384:R,m>3288:A,A} +fzx{x<2811:A,s<786:R,sjr} +hcz{a<1441:A,A} +ng{x>2025:A,a<1962:R,m>2393:A,A} +kg{x<1581:R,x<1788:R,R} +hc{a<1965:A,m<2176:R,R} +zrk{x>2229:A,R} +cgp{x>715:A,m>3614:A,R} +vmd{s>1327:R,A} +jsk{x>2685:bcv,m>1553:qgx,m>700:khd,mx} +kkc{m<1471:hcz,a>1447:A,x>594:A,tv} +ph{s<2709:R,a>615:A,R} +bqq{m>918:A,s<1255:A,x>2567:R,R} +dn{a>3209:zt,fc} +vm{x<119:R,a<356:R,A} +bvz{s<3732:zcl,fvj} +vgr{x>557:A,s>2325:R,A} +kl{m>1917:R,a>623:R,s<3697:R,A} +css{x<2079:flp,a>2235:vp,ttl} +qsf{s>458:rfh,s<225:A,x<1109:jm,A} +jjl{a<1765:qv,x>2506:tf,x>1208:zv,ljc} +xr{s>1663:A,R} +zqx{m<3112:A,R} +mm{x<2642:A,A} +bmm{a>1287:vf,m>2723:cf,tpd} +bx{s>1379:R,m<3154:A,a>2029:A,R} +hb{s>3578:A,a>1601:A,R} +npn{a>418:R,R} +gn{a<1162:dxm,a<1473:lz,xrb} +pj{x>3259:bgb,m<2105:rqc,hn} +cfp{m<1402:pgd,nn} +rx{a>2279:R,m<809:R,s<927:A,A} +dj{s<2516:R,R} +bj{s<3719:fls,pj} +ttl{a<753:djc,s>1593:tj,qr} +zp{m<862:A,R} +hzp{a<266:R,A} +hnb{m<729:A,m>1432:A,m>1081:A,R} +dfv{s<899:R,m>1776:bss,A} +gx{x<420:R,s<739:A,x>875:A,R} +lp{m>1603:A,x<2185:A,R} +khp{m<1240:R,s<3695:R,x>2040:R,A} +dxr{s<2453:A,x>300:A,dj} +rqc{m>859:mrq,a>1818:jvn,m<375:A,A} +cbf{a>1801:A,x<2146:R,A} +dxm{a<741:A,x<3647:lvx,s>3125:zm,cpx} +zdf{x>918:hrs,s<3499:bpj,x<510:qmn,vvr} +rk{a<1622:kjn,x>2035:lx,R} +mkf{s<2843:R,m>3082:R,R} +tpd{s>3176:R,a>1225:R,x>394:R,A} +tzq{m>2428:ngb,vl} +qj{s<1179:jjl,s>1877:szz,fvl} +xm{s<3237:R,a<738:A,A} +mf{a>1552:A,s<2401:R,R} +rlr{x>3280:A,x>2759:R,R} +hxn{a>3691:R,s<2707:R,s<2802:R,A} +lt{a>3090:R,s<71:A,A} +xk{a>3660:R,A} +zqm{a>928:A,A} +qs{m>1136:R,rnf} +jl{m<3203:A,m>3526:R,s>3891:A,A} +lx{a<1729:A,x>2216:A,m>1412:A,R} +gc{m<3522:R,a<2626:A,R} +pzc{a<3024:vtg,m>1682:R,m<1377:A,rrf} +gbk{m<654:R,s<1217:A,s<1223:R,A} +lvx{a<927:R,m>2149:R,x>3327:A,A} +fhj{s<1242:R,A} +xqn{m<896:pv,x<621:hq,pzc} +hq{s<661:cr,a>3031:R,s<1000:R,A} +xtz{s>2914:A,s>2909:R,R} +mpv{s>3459:bj,a>2014:blq,tgr} +rmz{m<2196:ghv,jvf} +fc{a<2548:kg,s>166:R,a<2930:A,lt} +rpv{x>3861:R,a<3150:R,s<2725:R,R} +nq{a>1505:R,m<3509:R,R} +qz{a<1558:R,m<3088:A,m>3640:R,R} +pg{a<1524:cdc,s>3406:A,m<1803:R,R} +nn{m<2341:fm,s>2091:nnd,x>667:R,A} +qnp{a<1882:A,s<2689:R,A} +kb{x<1708:A,A} +km{m>3254:R,x>2185:R,s>3646:cbf,R} +qhp{x<1902:bvz,ksc} +tf{m>2474:fnc,lh} +mrk{m>2540:gth,nh} +btj{a<3349:R,x>877:A,R} +cv{s>1227:ss,sr} +dlr{m<1789:gsm,m>2852:rtx,a>2963:bxj,zj} +xbm{s<3216:R,A} +cx{a>1657:R,x>1871:R,A} +cb{a<2526:R,A} +llk{m>2126:A,A} +hjb{m>3625:R,m>3514:R,A} +bq{a<1187:pkj,m<1393:lkm,x<695:bmm,svf} +fn{x>151:R,m<2679:A,A} +vp{a>2870:ff,m>2322:hd,s<1637:vjv,fs} +rlj{s>2896:qd,a>2284:zdx,a<1323:gf,jg} +ggp{m<1794:R,s<2883:A,x<1856:R,A} +znl{m>856:A,a<3666:hcv,sf} +svp{x>2155:xhh,a<3541:ctv,s<3726:ccd,bz} +mgj{x<1387:A,x<1600:R,R} +lkf{x>1081:qk,x>777:jf,x<686:mrc,jc} +rjg{a<1443:R,x>1229:R,s<1556:R,A} +mbg{a<622:A,x<834:A,x<867:R,R} +bss{a<3054:A,x>2187:A,a<3492:R,A} +xkd{a<562:kpp,R} +qr{s<1530:jdd,x<3305:R,R} +qfg{a<2318:R,fn} +jf{x>919:A,a>935:A,mbg} +bg{s>2516:R,A} +cbd{m>2449:A,a>1041:cn,a<450:R,xp} +xl{s<2925:hx,a>3207:R,R} +vrg{a>1289:hb,cj} +mtb{s>2981:hrh,A} +gfm{s<3070:R,m>3645:R,m>3357:R,R} +zfq{a<1584:js,lpq} +fbv{a<2481:A,x>1644:A,R} +rxp{a<1460:dx,bcr} +dlj{a>3193:A,x>2205:A,A} +nrc{a<941:rvc,s>2824:R,cx} +vjv{a<2589:R,s<1539:A,s<1591:A,R} +prg{x>943:R,x>469:R,a>1828:A,R} +cn{s>1408:A,m>1058:R,A} +hvc{x<696:frc,x<972:tt,qsf} +flp{a>2225:fq,a<1241:fj,s<1733:xn,prg} +bkf{m<1041:A,A} +dl{a>1330:R,s<2427:R,x<1467:A,A} +sn{m>3136:gfm,grr} +rfh{x>1129:R,A} +td{m>1204:R,m>773:A,a<2619:R,A} +jg{x<1834:A,a<1719:hxf,x<2218:ng,xxv} +jrj{a<386:A,R} +nv{m>210:R,R} +pjx{s<2086:mm,a<3090:fb,x>2720:R,sfp} +ll{s<2174:A,s<2409:R,R} +pn{x>2063:rjr,m>970:khp,a>1997:A,fhq} +gj{a>3526:R,a<3207:mr,lv} +nj{m<2883:A,s<3049:R,s>3494:R,cgp} +xq{a<3632:R,s>2980:R,R} +mrq{m<1543:R,m>1844:A,R} +rm{a>3252:hv,R} +fxx{a<1183:kmg,m<2218:qvl,zmm} +grr{a<2906:R,s<2997:R,m>2839:R,R} +kjn{x>2064:R,m>2516:R,x>1756:R,A} +bvd{s>3355:A,a>1525:R,R} +nf{x>3448:jrj,R} +hs{a<3135:R,s>399:R,A} +dln{s<561:mv,x>2863:nxp,s<800:A,A} +kmc{s>639:A,m>2835:R,R} +sfp{a>3626:A,x<2148:A,R} +ff{a<3401:R,a>3684:A,m>1555:hh,zp} +jz{a<3162:xt,a<3530:vq,s<3365:smr,svn} +tgr{x>3121:gn,x>2865:tzq,s>2899:jsk,ncg} +gl{s<739:pd,x>1894:dfv,a>2666:zmq,dvv} +grc{x<435:A,A} +sml{s<1264:R,m>3363:A,x<2284:A,A} +mkc{x<760:A,a<631:A,a>1386:R,kq} +xp{s>1423:A,x<2579:R,R} +vq{m>1343:fxk,nz} +mrg{m<1518:R,m<1658:R,A} +js{a>944:xg,x>2026:ph,s<2666:R,R} +kh{a<318:R,x<621:R,a<659:A,R} +rg{x>3435:R,R} +fhq{x<2040:A,a>704:R,m>551:A,R} +kq{m<2577:R,s<894:A,x<1039:A,A} +qd{m>2322:R,s<2906:A,x>1957:A,xtz} +ksc{x<2099:nrd,x>2265:lss,xfq} +kzv{a>2414:xj,lg} +kk{a<617:R,R} +jk{s>538:A,m<2863:A,R} +xg{a>1210:R,x>1982:R,x>1800:R,A} +cl{a>2733:R,clc} +bd{m<2716:A,a<3313:R,m<3413:A,fbm} +xjq{s<1984:A,m<1511:A,bpl} +rvk{a>1155:bkf,m<813:br,m<1432:A,zkh} +nd{s>452:kd,x>1163:kk,vzk} +fvj{s>3841:bgt,m<2521:bb,tz} +ks{m>2382:R,ntz} +tt{a<2850:R,A} +qgx{s>3258:zqm,s<3027:R,ktl} +ss{m>2041:A,ft} +rq{x<3120:xl,m>2642:sn,rtf} +jdd{s>1486:R,m>2101:A,m>762:A,A} +qx{a>3696:qrp,s>3657:A,R} +bks{a<607:A,R} +xs{a>2441:fh,x>2963:qqg,fxx} +mrc{m>2461:ckv,m>1428:kx,m>724:tq,A} +rb{m<2468:R,x>2419:R,x<2271:R,A} +ht{s<1252:R,A} +qk{x<1328:mf,x<1549:dl,nbv} +djc{m<1600:cm,a>283:nrs,R} +fh{s<2220:pjx,lgk} +bdr{a>3328:jfn,m>707:R,R} +rtx{x<1386:R,m>3269:gc,gb} +xkj{a>3749:A,a<3675:dtp,s<3004:pht,vkj} +pv{m>323:R,x>502:jh,s>514:nv,vz} +vv{a>3320:R,s<636:R,s>948:A,R} +sg{s>601:bp,cmk} +cr{a<2514:R,R} +gb{a<2813:A,R} +bmz{s<196:A,a<2556:fpk,s>307:pk,R} +bb{m>1091:A,R} +zdx{s>2879:R,a<3102:vk,A} +jfn{a<3606:A,A} +nbp{m>818:A,A} +kn{s>2923:R,A} +fr{a<1594:zd,a>2929:vc,kzv} +xj{m<2544:hjj,R} +hv{m>1991:R,A} +qrp{x>874:A,x>389:R,A} +cnc{m<985:A,R} +cnz{m<2037:hnb,A} +vmb{a>1700:jz,nm} +mv{m<1362:R,A} +gkz{s>3342:jsj,x>1892:xx,m<1670:R,kb} +xt{m>1817:nj,a<2551:fpt,ktx} +fj{a>463:A,A} +mx{m>253:gkh,s<3140:R,m>137:R,R} +jd{m>842:lb,m>451:kkv,s<1266:A,A} +cqz{s<1368:A,m<1575:A,R} +svf{s<3263:R,R} +sl{m<2246:A,R} +zrq{x>2077:lsm,x<1840:A,a>1618:R,bvd} +pz{m>3317:hjb,s>3590:A,x<1658:R,jvc} +csb{x<1439:vmb,x>2420:mpv,s<3414:gsz,qhp} +kmk{x>328:kpg,R} +qrq{a>1614:A,s<2403:zh,x>114:R,nbp} +fq{x>909:xr,a>2931:A,A} +lr{a>2309:rm,a>1791:vbs,s>3276:zrq,rk} +lsm{x>2277:R,a>1618:R,R} +klj{x>1054:R,m>2202:A,x>399:A,R} +mb{a<3099:R,s<2735:R,R} +fqn{m<210:R,A} +jj{s<2200:A,A} +pht{a>3714:R,A} +tz{x<1673:R,a<1378:A,A} +rrf{a>3595:A,a>3246:A,R} +nmq{a>2748:R,a<2542:R,x<2016:R,A} +fls{a<2084:vrg,mkz} +fbm{a>3544:R,A} +fnm{s>3733:dlj,lp} +zpt{s>665:xb,m>3543:hs,gv} +bxj{m>2343:R,A} +zkh{a<571:A,s>3679:A,a>921:R,A} +cdc{m>1919:A,R} +ngh{s>1238:xfj,s<1208:dlr,cv} +cj{a>700:A,R} +bgb{a>2604:dk,m>1677:jl,x>3687:lts,R} +dz{m<718:R,x<3415:R,R} +nnd{x>1061:R,m>2920:A,a>798:R,R} +hn{m<2984:A,a>2031:A,vxv} +dtp{x<945:A,a<3591:A,R} +qv{x>2355:sg,m<1752:nd,nxg} +vtg{a>2512:R,m<1657:A,x>981:R,A} +hr{x>2303:A,m<1178:A,A} +txv{s<2416:nfb,s<2487:svh,a>3134:xsg,cl} +mth{a>1241:R,A} +sf{s<2826:A,a<3808:A,a<3934:R,A} +hrh{m>2319:A,x>461:A,m>839:R,A} +tk{s>3674:A,s>3485:A,A} +ldr{m<1530:R,s<3738:hld,x<2358:rrr,nnl} +kpg{a>779:R,m>2426:R,R} +mcm{m>1928:qz,a>1571:R,a>1536:A,vgf} +kkv{s<1268:R,R} +ntz{x>354:R,R} +qg{x>390:hp,x<245:qjb,ptz} +rrr{s<3885:A,m<2398:R,R} +rtf{a>3255:xq,x>3511:A,s<3159:A,R} +ft{x>2278:R,m<1043:R,a<2670:R,R} +dcf{x>2425:A,x<1158:A,A} +vb{s<704:R,x<1816:R,R} +zv{s>491:gl,x<2068:dn,thd} +xb{s>882:nb,gx} +gth{s>3795:R,m<3296:A,A} +nxg{x>1262:bl,s>410:mkc,a>704:jtv,jbz} +rnd{x<2587:R,m<2247:xfr,vhm} +sjr{a>2727:R,A} +pt{s>532:R,R} +fm{x>631:A,x>335:A,s<2100:R,A} +gq{s>681:R,a<2732:R,m>1215:A,R} +svn{m<1967:qx,rc} +xv{s<2249:A,A} +zn{s<3051:A,x>2727:A,A} +hpq{s<2983:R,m<3115:R,A} +nh{a<1716:A,R} +qn{m>2908:R,s<3927:A,R} +lh{x<3047:dln,gq} +zch{x>1081:nlr,A} +np{x>876:zch,a<1580:mtb,sv} +tq{a>1139:A,a<709:R,R} +vk{m>1771:R,a>2624:A,R} +qt{a<1334:R,x>3407:R,R} +qf{s<3748:R,A} +zm{s<3247:R,x<3878:A,R} +xrl{a<807:A,a<1157:A,s>2999:A,R} +jvc{s<3505:R,s>3546:A,R} +trf{m>2082:jjq,a<3517:cnc,R} +nm{a<835:zdf,a<1402:bq,s>3203:zfr,np} +xxl{a<3140:cb,a<3432:vv,A} + +{x=3161,m=1141,a=51,s=441} +{x=240,m=174,a=555,s=1269} +{x=639,m=25,a=2025,s=345} +{x=97,m=1410,a=1572,s=1133} +{x=763,m=1918,a=625,s=2037} +{x=83,m=1395,a=433,s=2841} +{x=359,m=652,a=831,s=129} +{x=979,m=204,a=1976,s=1629} +{x=3112,m=122,a=816,s=305} +{x=523,m=2334,a=108,s=1286} +{x=267,m=152,a=480,s=389} +{x=278,m=917,a=1419,s=2422} +{x=207,m=1337,a=600,s=282} +{x=128,m=913,a=3232,s=189} +{x=1359,m=15,a=1792,s=2028} +{x=87,m=2807,a=3202,s=104} +{x=4,m=240,a=686,s=1790} +{x=2332,m=537,a=1657,s=289} +{x=1739,m=75,a=2757,s=1320} +{x=2127,m=44,a=1389,s=224} +{x=564,m=3263,a=177,s=447} +{x=424,m=915,a=1856,s=18} +{x=632,m=1638,a=665,s=315} +{x=950,m=993,a=136,s=11} +{x=154,m=611,a=405,s=1090} +{x=1784,m=1239,a=506,s=878} +{x=379,m=332,a=89,s=1091} +{x=2234,m=315,a=1158,s=2140} +{x=971,m=283,a=56,s=1089} +{x=39,m=101,a=256,s=995} +{x=259,m=25,a=829,s=2383} +{x=2681,m=876,a=676,s=109} +{x=1783,m=2119,a=299,s=25} +{x=2735,m=1444,a=94,s=572} +{x=710,m=2673,a=372,s=1524} +{x=171,m=221,a=1344,s=234} +{x=250,m=547,a=40,s=2485} +{x=1282,m=1141,a=823,s=1862} +{x=3,m=557,a=1924,s=1310} +{x=23,m=1217,a=133,s=2587} +{x=2073,m=75,a=246,s=250} +{x=591,m=646,a=510,s=610} +{x=1057,m=1782,a=1460,s=360} +{x=715,m=2817,a=1441,s=1769} +{x=132,m=478,a=1510,s=1669} +{x=3098,m=1549,a=915,s=2968} +{x=1913,m=570,a=542,s=381} +{x=311,m=935,a=277,s=290} +{x=486,m=148,a=240,s=61} +{x=428,m=1469,a=26,s=1175} +{x=520,m=979,a=84,s=413} +{x=244,m=1671,a=2482,s=6} +{x=53,m=1426,a=3,s=202} +{x=787,m=1504,a=1281,s=1676} +{x=27,m=2265,a=1142,s=202} +{x=1876,m=170,a=2306,s=2130} +{x=699,m=48,a=228,s=634} +{x=684,m=1694,a=287,s=1244} +{x=1140,m=919,a=845,s=1543} +{x=2313,m=183,a=948,s=1856} +{x=345,m=325,a=399,s=673} +{x=758,m=79,a=523,s=1105} +{x=271,m=1196,a=611,s=1465} +{x=495,m=2296,a=543,s=873} +{x=1054,m=273,a=1040,s=975} +{x=2372,m=642,a=415,s=303} +{x=2865,m=216,a=208,s=1772} +{x=219,m=29,a=689,s=561} +{x=885,m=150,a=816,s=1035} +{x=2293,m=1052,a=546,s=527} +{x=1384,m=461,a=264,s=911} +{x=1125,m=652,a=3475,s=1492} +{x=193,m=823,a=511,s=719} +{x=3393,m=26,a=15,s=111} +{x=611,m=1012,a=114,s=839} +{x=527,m=159,a=3961,s=465} +{x=214,m=416,a=1332,s=348} +{x=21,m=1247,a=1356,s=112} +{x=3308,m=387,a=587,s=16} +{x=171,m=1571,a=2145,s=1685} +{x=1334,m=970,a=133,s=102} +{x=567,m=348,a=318,s=624} +{x=344,m=911,a=593,s=326} +{x=976,m=584,a=270,s=339} +{x=879,m=796,a=565,s=1348} +{x=1427,m=1060,a=751,s=1071} +{x=2412,m=582,a=407,s=1668} +{x=21,m=147,a=1452,s=681} +{x=457,m=404,a=1617,s=338} +{x=1810,m=1236,a=19,s=174} +{x=55,m=674,a=530,s=327} +{x=423,m=348,a=1067,s=424} +{x=2836,m=2279,a=3116,s=73} +{x=792,m=2863,a=1457,s=1643} +{x=537,m=910,a=2132,s=2005} +{x=895,m=1383,a=86,s=632} +{x=302,m=891,a=61,s=303} +{x=24,m=28,a=438,s=458} +{x=1134,m=104,a=219,s=623} +{x=208,m=1184,a=280,s=2224} +{x=1884,m=762,a=2518,s=588} +{x=1712,m=2692,a=580,s=1996} +{x=597,m=1108,a=1198,s=889} +{x=29,m=1692,a=456,s=2358} +{x=604,m=1656,a=149,s=374} +{x=995,m=1575,a=1300,s=1043} +{x=513,m=64,a=348,s=670} +{x=2016,m=148,a=288,s=240} +{x=2208,m=388,a=726,s=69} +{x=521,m=1808,a=2767,s=856} +{x=512,m=103,a=439,s=1943} +{x=148,m=935,a=787,s=477} +{x=1153,m=2337,a=238,s=3068} +{x=692,m=2215,a=1089,s=134} +{x=2260,m=1675,a=2775,s=1847} +{x=625,m=3316,a=1996,s=2999} +{x=2263,m=2373,a=2421,s=349} +{x=13,m=2202,a=316,s=132} +{x=1414,m=2836,a=2224,s=206} +{x=2597,m=203,a=741,s=1575} +{x=3420,m=1012,a=637,s=768} +{x=278,m=1222,a=1586,s=463} +{x=511,m=816,a=71,s=381} +{x=538,m=320,a=395,s=2388} +{x=522,m=741,a=2172,s=1418} +{x=112,m=619,a=1875,s=1458} +{x=462,m=2079,a=252,s=54} +{x=2828,m=121,a=297,s=19} +{x=444,m=1444,a=85,s=88} +{x=1328,m=43,a=1168,s=241} +{x=1963,m=162,a=135,s=915} +{x=350,m=994,a=223,s=3064} +{x=130,m=790,a=895,s=52} +{x=317,m=83,a=265,s=478} +{x=215,m=2935,a=703,s=2731} +{x=1274,m=1313,a=455,s=2270} +{x=18,m=1971,a=1987,s=1992} +{x=2444,m=646,a=1462,s=232} +{x=1054,m=44,a=241,s=1037} +{x=212,m=1389,a=1490,s=574} +{x=301,m=3887,a=1190,s=300} +{x=3405,m=2067,a=2279,s=976} +{x=503,m=1631,a=933,s=303} +{x=1877,m=2443,a=2986,s=2055} +{x=559,m=1073,a=2167,s=1286} +{x=2473,m=1614,a=1850,s=503} +{x=357,m=430,a=1105,s=15} +{x=601,m=271,a=891,s=290} +{x=1958,m=6,a=250,s=796} +{x=635,m=507,a=262,s=853} +{x=337,m=949,a=2590,s=53} +{x=3419,m=3441,a=1089,s=592} +{x=132,m=992,a=482,s=306} +{x=979,m=958,a=2428,s=572} +{x=20,m=60,a=1124,s=3558} +{x=189,m=406,a=1382,s=546} +{x=1264,m=12,a=716,s=239} +{x=916,m=2214,a=69,s=146} +{x=631,m=2307,a=1969,s=421} +{x=1277,m=864,a=1780,s=490} +{x=306,m=2550,a=53,s=2171} +{x=120,m=1296,a=474,s=301} +{x=1566,m=869,a=894,s=2050} +{x=698,m=2308,a=687,s=492} +{x=2410,m=2671,a=806,s=1228} +{x=988,m=3291,a=459,s=229} +{x=1481,m=204,a=646,s=2167} +{x=238,m=593,a=497,s=186} +{x=317,m=187,a=772,s=129} +{x=53,m=3624,a=751,s=554} +{x=503,m=59,a=699,s=2483} +{x=59,m=1139,a=442,s=334} +{x=297,m=473,a=2519,s=554} +{x=254,m=1241,a=1477,s=280} +{x=117,m=1332,a=251,s=571} +{x=543,m=2228,a=606,s=473} +{x=1241,m=822,a=1544,s=2650} +{x=656,m=665,a=2678,s=2842} +{x=111,m=1574,a=537,s=807} +{x=152,m=641,a=16,s=325} +{x=2814,m=230,a=2633,s=224} +{x=4,m=856,a=2263,s=32} +{x=1837,m=124,a=221,s=3059} +{x=320,m=311,a=1653,s=15} +{x=265,m=307,a=930,s=2960} +{x=796,m=87,a=2572,s=741} +{x=602,m=585,a=2755,s=381} +{x=455,m=441,a=610,s=1380} +{x=552,m=1554,a=1800,s=39} +{x=1707,m=170,a=92,s=789} +{x=772,m=490,a=1173,s=763} +{x=2930,m=2475,a=1873,s=1826} +{x=1571,m=572,a=1883,s=1534} +{x=2008,m=2416,a=155,s=799} +{x=2060,m=1868,a=372,s=41} +{x=1899,m=104,a=7,s=456} +{x=37,m=718,a=642,s=1394} +{x=2078,m=1001,a=2864,s=791} +{x=124,m=890,a=2174,s=2418} +{x=996,m=2173,a=318,s=2194} diff --git a/src/day12pt1.rs b/src/day12pt1.rs index bdf4027..dbc7011 100644 --- a/src/day12pt1.rs +++ b/src/day12pt1.rs @@ -7,7 +7,10 @@ pub fn main() { for line in input { let s = line[0]; - let n = line[1].split(",").map(|s| s.parse::<u64>().unwrap()).collect::<Vec<_>>(); + let n = line[1] + .split(",") + .map(|s| s.parse::<u64>().unwrap()) + .collect::<Vec<_>>(); println!("{} {:?}", s, n); } } diff --git a/src/day17pt1.rs b/src/day17pt1.rs new file mode 100644 index 0000000..959012c --- /dev/null +++ b/src/day17pt1.rs @@ -0,0 +1,74 @@ +use std::cmp::Reverse; +use std::collections::BinaryHeap; +use std::collections::HashMap; +const N: usize = 200; +const M: usize = 200; + +pub fn dist(input: &Vec<Vec<u32>>, y1: i32, x1: i32, y2: i32, x2: i32) -> i32 { + let ind1 = (y1 - y2).abs(); + let ind2 = (x1 - x2).abs(); + + if (ind1 == 1 && ind2 == 0) || (ind1 == 0 && ind2 == 1) { + return input[y2 as usize][x2 as usize] as i32; + } + + return i32::MAX; +} + +pub fn main() { + let txt = std::fs::read_to_string("./input/day17.txt").unwrap(); + let input = txt + .lines() + .map(|s| { + s.split("") + .filter_map(|c| c.parse::<u32>().ok()) + .collect::<Vec<_>>() + }) + .collect::<Vec<Vec<_>>>(); + + let n = input.len(); + let m = input[0].len(); + let mut d = [[i32::MAX; M]; N]; + + // (dist, y, x, dy, dx, cnt) + let mut bh: BinaryHeap<Reverse<(i32, i32, i32, i32, i32, i32)>> = Default::default(); + // (y, x, dy, dx, cnt) + let mut hm: HashMap<(i32, i32, i32, i32, i32), bool> = Default::default(); + + bh.push(Reverse((0, 0, 0, 0, 0, 0))); + hm.insert((0, 0, 0, 0, 0), true); + + while !bh.is_empty() { + let Reverse(x) = bh.pop().unwrap(); + let (ndist, i, j, odi, odj, cnt) = x; + + if ndist < d[i as usize][j as usize] { + d[i as usize][j as usize] = ndist; + } + + for (di, dj) in [(0, 1), (0, -1), (1, 0), (-1, 0)] { + if odi == -di && odj == -dj { + continue; + } + + let ni = i + di; + let nj = j + dj; + if ni < 0 || ni >= n as i32 || nj < 0 || nj >= m as i32 { + continue; + } + + let ncnt = (cnt + 1) * (di == odi && dj == odj) as i32; + let ndst = ndist + dist(&input, i, j, ni, nj); + + if hm.contains_key(&(ni, nj, di, dj, ncnt)) || ncnt == 3 { + continue; + } else { + hm.insert((ni, nj, di, dj, ncnt), true); + } + + bh.push(Reverse((ndst, ni, nj, di, dj, ncnt))); + } + } + + println!("{}", d[n - 1][m - 1]); +} diff --git a/src/day17pt2.rs b/src/day17pt2.rs new file mode 100644 index 0000000..2ace59f --- /dev/null +++ b/src/day17pt2.rs @@ -0,0 +1,80 @@ +use std::cmp::Reverse; +use std::collections::BinaryHeap; +use std::collections::HashMap; +const N: usize = 200; +const M: usize = 200; + +pub fn dist(input: &Vec<Vec<u32>>, y1: i32, x1: i32, y2: i32, x2: i32) -> i32 { + let ind1 = (y1 - y2).abs(); + let ind2 = (x1 - x2).abs(); + + if (ind1 == 1 && ind2 == 0) || (ind1 == 0 && ind2 == 1) { + return input[y2 as usize][x2 as usize] as i32; + } + + return i32::MAX; +} + +pub fn main() { + let txt = std::fs::read_to_string("./input/day17.txt").unwrap(); + let input = txt + .lines() + .map(|s| { + s.split("") + .filter_map(|c| c.parse::<u32>().ok()) + .collect::<Vec<_>>() + }) + .collect::<Vec<Vec<_>>>(); + + let n = input.len(); + let m = input[0].len(); + let mut d = [[i32::MAX; M]; N]; + + // (dist, y, x, dy, dx, cnt) + let mut bh: BinaryHeap<Reverse<(i32, i32, i32, i32, i32, i32)>> = Default::default(); + // (y, x, dy, dx, cnt) + let mut hm: HashMap<(i32, i32, i32, i32, i32), bool> = Default::default(); + + bh.push(Reverse((0, 0, 0, 0, 1, 0))); + bh.push(Reverse((0, 0, 0, 1, 0, 0))); + hm.insert((0, 0, 0, 1, 0), true); + hm.insert((0, 0, 1, 0, 0), true); + + while !bh.is_empty() { + let Reverse(x) = bh.pop().unwrap(); + let (ndist, i, j, odi, odj, cnt) = x; + + if ndist < d[i as usize][j as usize] && cnt >= 4 { + d[i as usize][j as usize] = ndist; + } + + for (di, dj) in [(0, 1), (0, -1), (1, 0), (-1, 0)] { + if odi == -di && odj == -dj { + continue; + } + + if cnt < 4 && !(odi == di && odj == dj) { + continue; + } + + let ni = i + di; + let nj = j + dj; + if ni < 0 || ni >= n as i32 || nj < 0 || nj >= m as i32 { + continue; + } + + let ncnt = if di == odi && dj == odj { cnt + 1 } else { 1 }; + let ndst = ndist + dist(&input, i, j, ni, nj); + + if hm.contains_key(&(ni, nj, di, dj, ncnt)) || ncnt == 11 { + continue; + } else { + hm.insert((ni, nj, di, dj, ncnt), true); + } + + bh.push(Reverse((ndst, ni, nj, di, dj, ncnt))); + } + } + + println!("{}", d[n - 1][m - 1]); +} diff --git a/src/main.rs b/src/main.rs index 3c60b82..e3e41ae 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,7 @@ -mod day16pt1; -mod day16pt2; +mod day17pt1; +mod day17pt2; fn main() { - day16pt1::main(); - day16pt2::main(); + day17pt1::main(); + day17pt2::main(); } |
