package Ġcom . github . dav io . a oc . y 2 0 2 1 Ċ Ċ import Ġcom . github . dav io . a oc . general . Point Ċ import Ġcom . github . dav io . a oc . general . call Ċ import Ġcom . github . dav io . a oc . general . getInput As List Ċ import Ġkotlin . system . measure Time Millis Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ ĠDay 1 5 . parse Input () ĊĠĠĠ ĠDay 1 5 . getResult Part 1 () ĊĠĠĠ Ġmeasure Time Millis Ġ{ ĊĠĠĠĠĠĠĠ ĠDay 1 5 . getResult Part 2 () ĊĠĠĠ Ġ}. call Ġ{ Ġprintln (" T ook Ġ$ it Ġms ") Ġ} Ċ } Ċ Ċ object ĠDay 1 5 Ġ{ ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ--- ĠDay Ġ 1 5 : ĠCh iton Ġ--- Ċ Ċ You 've Ġalmost Ġreached Ġthe Ġexit Ġof Ġthe Ġcave , Ġbut Ġthe Ġwalls Ġare Ġgetting Ġcloser Ġtogether . ĠYour Ġsub mar ine Ġcan Ġbare ly Ġstill Ġfit , Ġthough ; Ġthe Ġmain Ġproblem Ġis Ġthat Ġthe Ġwalls Ġof Ġthe Ġcave Ġare Ġcovered Ġin Ġch it ons , Ġand Ġit Ġwould Ġbe Ġbest Ġnot Ġto Ġbump Ġany Ġof Ġthem . Ċ Ċ The Ġca ver n Ġis Ġlarge , Ġbut Ġhas Ġa Ġvery Ġlow Ġce iling , Ġrestrict ing Ġyour Ġmotion Ġto Ġtwo Ġdimensions . ĠThe Ġshape Ġof Ġthe Ġca ver n Ġre semb les Ġa Ġsquare ; Ġa Ġquick Ġscan Ġof Ġch iton Ġdensity Ġproduces Ġa Ġmap Ġof Ġrisk Ġlevel Ġthroughout Ġthe Ġcave Ġ( your Ġpuzzle Ġinput ). ĠFor Ġexample : ĊĊ 1 1 6 3 7 5 1 7 4 2 Ċ 1 3 8 1 3 7 3 6 7 2 Ċ 2 1 3 6 5 1 1 3 2 8 Ċ 3 6 9 4 9 3 1 5 6 9 Ċ 7 4 6 3 4 1 7 1 1 1 Ċ 1 3 1 9 1 2 8 1 3 7 Ċ 1 3 5 9 9 1 2 4 2 1 Ċ 3 1 2 5 4 2 1 6 3 9 Ċ 1 2 9 3 1 3 8 5 2 1 Ċ 2 3 1 1 9 4 4 5 8 1 Ċ Ċ You Ġstart Ġin Ġthe Ġtop Ġleft Ġposition , Ġyour Ġdestination Ġis Ġthe Ġbottom Ġright Ġposition , Ġand Ġyou Ġcannot Ġmove Ġdiag on ally . ĠThe Ġnumber Ġat Ġeach Ġposition Ġis Ġits Ġrisk Ġlevel ; Ġto Ġdetermine Ġthe Ġtotal Ġrisk Ġof Ġan Ġentire Ġpath , Ġadd Ġup Ġthe Ġrisk Ġlevels Ġof Ġeach Ġposition Ġyou Ġenter Ġ( that Ġis , Ġdon 't Ġcount Ġthe Ġrisk Ġlevel Ġof Ġyour Ġstarting Ġposition Ġunless Ġyou Ġenter Ġit ; Ġleaving Ġit Ġadds Ġno Ġrisk Ġto Ġyour Ġtotal ). Ċ Ċ Your Ġgoal Ġis Ġto Ġfind Ġa Ġpath Ġwith Ġthe Ġlowest Ġtotal Ġrisk . ĠIn Ġthis Ġexample , Ġa Ġpath Ġwith Ġthe Ġlowest Ġtotal Ġrisk Ġis Ġhighlighted Ġhere : ĊĊ 1 1 6 3 7 5 1 7 4 2 Ċ 1 3 8 1 3 7 3 6 7 2 Ċ 2 1 3 6 5 1 1 3 2 8 Ċ 3 6 9 4 9 3 1 5 6 9 Ċ 7 4 6 3 4 1 7 1 1 1 Ċ 1 3 1 9 1 2 8 1 3 7 Ċ 1 3 5 9 9 1 2 4 2 1 Ċ 3 1 2 5 4 2 1 6 3 9 Ċ 1 2 9 3 1 3 8 5 2 1 Ċ 2 3 1 1 9 4 4 5 8 1 Ċ Ċ The Ġtotal Ġrisk Ġof Ġthis Ġpath Ġis Ġ 4 0 Ġ( the Ġstarting Ġposition Ġis Ġnever Ġentered , Ġso Ġits Ġrisk Ġis Ġnot Ġcounted ). Ċ Ċ What Ġis Ġthe Ġlowest Ġtotal Ġrisk Ġof Ġany Ġpath Ġfrom Ġthe Ġtop Ġleft Ġto Ġthe Ġbottom Ġright ? ĊĠĠĠ Ġ*/ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġch it ons : ĠArray < IntArray > ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstart : ĠPoint ĊĊĠĠĠ Ġprivate Ġconst Ġval Ġbold Red Color Ġ= Ġ"\ u 0 0 1 B [ 3 1 m \ u 0 0 1 B [ 1 m " ĊĠĠĠ Ġprivate Ġconst Ġval Ġansi Reset Ġ= Ġ"\ u 0 0 1 B [ 0 m " ĊĊĠĠĠ Ġfun Ġparse Input () Ġ{ ĊĠĠĠĠĠĠĠ Ġch it ons Ġ= Ġget Input As List (). map Ġ{ Ġline Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġline . toCharArray (). map Ġ{ Ġit . digit ToInt () Ġ}. to IntArray () ĊĠĠĠĠĠĠĠ Ġ}. to Typed Array () ĊĊĠĠĠĠĠĠĠ Ġstart Ġ= ĠPoint ( 0 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Result Part 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroute Ġ= Ġa Star ( ch it ons , Ġstart , ĠPoint ( ch it ons [ 0 ]. last Index , Ġ Ġch it ons . last Index )) ĊĠĠĠĠĠĠĠ Ġprint Route ( ch it ons , Ġroute ) ĊĠĠĠĠĠĠĠ Ġprintln ( route . drop ( 1 ). sum Of Ġ{ Ġpoint Ġ-> Ġch it ons [ point . y ][ point . x ] Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhe uristic Function ( risk Map : ĠArray < IntArray >, Ġpoint : ĠPoint ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( risk Map . last Index Ġ- Ġpoint . y ) Ġ+ Ġ( risk Map [ 0 ]. last Index Ġ- Ġpoint . x ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprint Route ( risk Map : ĠArray < IntArray >, Ġroute : ĠList < Point >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrisk Map . indices . forEach Ġ{ Ġy Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrisk Map [ 0 ]. indices . forEach Ġ{ Ġx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġansi Color Ġ= Ġif Ġ( route . any Ġ{ Ġit Ġ== ĠPoint ( x , Ġy ) Ġ}) Ġbold Red Color Ġelse Ġansi Reset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ("$ ansi Color ${ risk Map [ y ][ x ]} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( ansi Reset ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreconstruct Path ( came From : ĠMap < Point , ĠPoint >, Ġcurrent : ĠPoint ): ĠList < Point > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtotal Path Ġ= Ġmutable ListOf ( current ) ĊĠĠĠĠĠĠĠ Ġvar Ġmy Current Ġ= Ġcurrent ĊĠĠĠĠĠĠĠ Ġwhile Ġ( my Current Ġin Ġcame From . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Current Ġ= Ġcame From [ my Current ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Path . add ( 0 , Ġmy Current ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtotal Path ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġa Star ( risk Map : ĠArray < IntArray >, Ġstart : ĠPoint , Ġgoal : ĠPoint ): ĠList < Point > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġset Ġof Ġdiscovered Ġnodes Ġthat Ġmay Ġneed Ġto Ġbe Ġ( re -) expanded . ĊĠĠĠĠĠĠĠ Ġ// ĠInit ially , Ġonly Ġthe Ġstart Ġnode Ġis Ġknown . ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġusually Ġimplemented Ġas Ġa Ġmin - heap Ġor Ġpriority Ġqueue Ġrather Ġthan Ġa Ġhash - set . ĊĠĠĠĠĠĠĠ Ġval Ġopen Set Ġ= Ġhash Set Of ( start ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġnode Ġn , Ġcame From [ n ] Ġis Ġthe Ġnode Ġimmediately Ġpreceding Ġit Ġon Ġthe Ġche ape st Ġpath Ġfrom Ġstart ĊĠĠĠĠĠĠĠ Ġ// Ġto Ġn Ġcurrently Ġknown . ĊĠĠĠĠĠĠĠ Ġval Ġcame From Ġ= Ġmutable Map Of < Point , ĠPoint >() ĊĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġnode Ġn , Ġg Score [ n ] Ġis Ġthe Ġcost Ġof Ġthe Ġche ape st Ġpath Ġfrom Ġstart Ġto Ġn Ġcurrently Ġknown . ĊĠĠĠĠĠĠĠ Ġval Ġg Score Ġ= Ġmutable Map Of ( start Ġto Ġ 0 ). with Default Ġ{ ĠInt . MAX _ VALUE Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġnode Ġn , Ġf Score [ n ] Ġ:= Ġg Score [ n ] Ġ+ Ġh ( n ). Ġf Score [ n ] Ġrepresents Ġour Ġcurrent Ġbest Ġguess Ġas Ġto ĊĠĠĠĠĠĠĠ Ġ// Ġhow Ġshort Ġa Ġpath Ġfrom Ġstart Ġto Ġfinish Ġcan Ġbe Ġif Ġit Ġgoes Ġthrough Ġn . ĊĠĠĠĠĠĠĠ Ġval Ġf Score Ġ= Ġmutable Map Of ( start Ġto Ġhe uristic Function ( risk Map , Ġstart )). with Default Ġ{ ĠInt . MAX _ VALUE Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( open Set . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġoperation Ġcan Ġoccur Ġin ĠO ( 1 ) Ġtime Ġif Ġopen Set Ġis Ġa Ġmin - heap Ġor Ġa Ġpriority Ġqueue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġopen Set . min By OrNull Ġ{ Ġch iton Ġ-> Ġf Score . getValue ( ch iton ) Ġ} !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Ġ== Ġgoal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġreconstruct Path ( came From , Ġcurrent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Set . remove ( current ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Neighbors ( current , Ġrisk Map ). forEach Ġ{ Ġneighbor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġd ( current , neighbor ) Ġis Ġthe Ġweight Ġof Ġthe Ġedge Ġfrom Ġcurrent Ġto Ġneighbor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtent ative _ g Score Ġis Ġthe Ġdistance Ġfrom Ġstart Ġto Ġthe Ġneighbor Ġthrough Ġcurrent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Current Neighbor Ġ= Ġrisk Map [ neighbor . y ][ neighbor . x ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtent ative G Score Ġ= Ġg Score [ current ] !! Ġ+ Ġd Current Neighbor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( t ent ative G Score Ġ< Ġg Score . getValue ( neighbor )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġpath Ġto Ġneighbor Ġis Ġbetter Ġthan Ġany Ġprevious Ġone . ĠRecord Ġit ! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcame From [ neighbor ] Ġ= Ġcurrent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg Score [ neighbor ] Ġ= Ġtent ative G Score ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf Score [ neighbor ] Ġ= Ġtent ative G Score Ġ+ Ġhe uristic Function ( risk Map , Ġneighbor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Set . add ( neighbor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* Ċ --- ĠPart ĠTwo Ġ--- Ċ Ċ Now Ġthat Ġyou Ġknow Ġhow Ġto Ġfind Ġlow - risk Ġpaths Ġin Ġthe Ġcave , Ġyou Ġcan Ġtry Ġto Ġfind Ġyour Ġway Ġout . Ċ Ċ The Ġentire Ġcave Ġis Ġactually Ġfive Ġtimes Ġlarger Ġin Ġboth Ġdimensions Ġthan Ġyou Ġthought ; Ġthe Ġarea Ġyou Ġoriginally Ġscanned Ġis Ġjust Ġone Ġtile Ġin Ġa Ġ 5 x 5 Ġtile Ġarea Ġthat Ġforms Ġthe Ġfull Ġmap . ĠYour Ġoriginal Ġmap Ġtile Ġrepe ats Ġto Ġthe Ġright Ġand Ġdown ward ; Ġeach Ġtime Ġthe Ġtile Ġrepe ats Ġto Ġthe Ġright Ġor Ġdown ward , Ġall Ġof Ġits Ġrisk Ġlevels Ġare Ġ 1 Ġhigher Ġthan Ġthe Ġtile Ġimmediately Ġup Ġor Ġleft Ġof Ġit . ĠHowever , Ġrisk Ġlevels Ġabove Ġ 9 Ġwrap Ġback Ġaround Ġto Ġ 1 . ĠSo , Ġif Ġyour Ġoriginal Ġmap Ġhad Ġsome Ġposition Ġwith Ġa Ġrisk Ġlevel Ġof Ġ 8 , Ġthen Ġthat Ġsame Ġposition Ġon Ġeach Ġof Ġthe Ġ 2 5 Ġtotal Ġtiles Ġwould Ġbe Ġas Ġfollows : ĊĊ 8 Ġ 9 Ġ 1 Ġ 2 Ġ 3 Ċ 9 Ġ 1 Ġ 2 Ġ 3 Ġ 4 Ċ 1 Ġ 2 Ġ 3 Ġ 4 Ġ 5 Ċ 2 Ġ 3 Ġ 4 Ġ 5 Ġ 6 Ċ 3 Ġ 4 Ġ 5 Ġ 6 Ġ 7 Ċ Ċ Each Ġsingle Ġdigit Ġabove Ġcorresponds Ġto Ġthe Ġexample Ġposition Ġwith Ġa Ġvalue Ġof Ġ 8 Ġon Ġthe Ġtop - left Ġtile . ĠBecause Ġthe Ġfull Ġmap Ġis Ġactually Ġfive Ġtimes Ġlarger Ġin Ġboth Ġdimensions , Ġthat Ġposition Ġappears Ġa Ġtotal Ġof Ġ 2 5 Ġtimes , Ġonce Ġin Ġeach Ġduplicated Ġtile , Ġwith Ġthe Ġvalues Ġshown Ġabove . Ċ Ċ Here Ġis Ġthe Ġfull Ġfive - times - as - large Ġversion Ġof Ġthe Ġfirst Ġexample Ġabove , Ġwith Ġthe Ġoriginal Ġmap Ġin Ġthe Ġtop Ġleft Ġcorner Ġhighlighted : ĊĊ 1 1 6 3 7 5 1 7 4 2 2 2 7 4 8 6 2 8 5 3 3 3 8 5 9 7 3 9 6 4 4 4 9 6 1 8 4 1 7 5 5 5 1 7 2 9 5 2 8 6 Ċ 1 3 8 1 3 7 3 6 7 2 2 4 9 2 4 8 4 7 8 3 3 5 1 3 5 9 5 8 9 4 4 6 2 4 6 1 6 9 1 5 5 7 3 5 7 2 7 1 2 6 Ċ 2 1 3 6 5 1 1 3 2 8 3 2 4 7 6 2 2 4 3 9 4 3 5 8 7 3 3 5 4 1 5 4 6 9 8 4 4 6 5 2 6 5 7 1 9 5 5 7 6 3 Ċ 3 6 9 4 9 3 1 5 6 9 4 7 1 5 1 4 2 6 7 1 5 8 2 6 2 5 3 7 8 2 6 9 3 7 3 6 4 8 9 3 7 1 4 8 4 7 5 9 1 4 Ċ 7 4 6 3 4 1 7 1 1 1 8 5 7 4 5 2 8 2 2 2 9 6 8 5 6 3 9 3 3 3 1 7 9 6 7 4 1 4 4 4 2 8 1 7 8 5 2 5 5 5 Ċ 1 3 1 9 1 2 8 1 3 7 2 4 2 1 2 3 9 2 4 8 3 5 3 2 3 4 1 3 5 9 4 6 4 3 4 5 2 4 6 1 5 7 5 4 5 6 3 5 7 2 Ċ 1 3 5 9 9 1 2 4 2 1 2 4 6 1 1 2 3 5 3 2 3 5 7 2 2 3 4 6 4 3 4 6 8 3 3 4 5 7 5 4 5 7 9 4 4 5 6 8 6 5 Ċ 3 1 2 5 4 2 1 6 3 9 4 2 3 6 5 3 2 7 4 1 5 3 4 7 6 4 3 8 5 2 6 4 5 8 7 5 4 9 6 3 7 5 6 9 8 6 5 1 7 4 Ċ 1 2 9 3 1 3 8 5 2 1 2 3 1 4 2 4 9 6 3 2 3 4 2 5 3 5 1 7 4 3 4 5 3 6 4 6 2 8 5 4 5 6 4 7 5 7 3 9 6 5 Ċ 2 3 1 1 9 4 4 5 8 1 3 4 2 2 1 5 5 6 9 2 4 5 3 3 2 6 6 7 1 3 5 6 4 4 3 7 7 8 2 4 6 7 5 5 4 8 8 9 3 5 Ċ 2 2 7 4 8 6 2 8 5 3 3 3 8 5 9 7 3 9 6 4 4 4 9 6 1 8 4 1 7 5 5 5 1 7 2 9 5 2 8 6 6 6 2 8 3 1 6 3 9 7 Ċ 2 4 9 2 4 8 4 7 8 3 3 5 1 3 5 9 5 8 9 4 4 6 2 4 6 1 6 9 1 5 5 7 3 5 7 2 7 1 2 6 6 8 4 6 8 3 8 2 3 7 Ċ 3 2 4 7 6 2 2 4 3 9 4 3 5 8 7 3 3 5 4 1 5 4 6 9 8 4 4 6 5 2 6 5 7 1 9 5 5 7 6 3 7 6 8 2 1 6 6 8 7 4 Ċ 4 7 1 5 1 4 2 6 7 1 5 8 2 6 2 5 3 7 8 2 6 9 3 7 3 6 4 8 9 3 7 1 4 8 4 7 5 9 1 4 8 2 5 9 5 8 6 1 2 5 Ċ 8 5 7 4 5 2 8 2 2 2 9 6 8 5 6 3 9 3 3 3 1 7 9 6 7 4 1 4 4 4 2 8 1 7 8 5 2 5 5 5 3 9 2 8 9 6 3 6 6 6 Ċ 2 4 2 1 2 3 9 2 4 8 3 5 3 2 3 4 1 3 5 9 4 6 4 3 4 5 2 4 6 1 5 7 5 4 5 6 3 5 7 2 6 8 6 5 6 7 4 6 8 3 Ċ 2 4 6 1 1 2 3 5 3 2 3 5 7 2 2 3 4 6 4 3 4 6 8 3 3 4 5 7 5 4 5 7 9 4 4 5 6 8 6 5 6 8 1 5 5 6 7 9 7 6 Ċ 4 2 3 6 5 3 2 7 4 1 5 3 4 7 6 4 3 8 5 2 6 4 5 8 7 5 4 9 6 3 7 5 6 9 8 6 5 1 7 4 8 6 7 1 9 7 6 2 8 5 Ċ 2 3 1 4 2 4 9 6 3 2 3 4 2 5 3 5 1 7 4 3 4 5 3 6 4 6 2 8 5 4 5 6 4 7 5 7 3 9 6 5 6 7 5 8 6 8 4 1 7 6 Ċ 3 4 2 2 1 5 5 6 9 2 4 5 3 3 2 6 6 7 1 3 5 6 4 4 3 7 7 8 2 4 6 7 5 5 4 8 8 9 3 5 7 8 6 6 5 9 9 1 4 6 Ċ 3 3 8 5 9 7 3 9 6 4 4 4 9 6 1 8 4 1 7 5 5 5 1 7 2 9 5 2 8 6 6 6 2 8 3 1 6 3 9 7 7 7 3 9 4 2 7 4 1 8 Ċ 3 5 1 3 5 9 5 8 9 4 4 6 2 4 6 1 6 9 1 5 5 7 3 5 7 2 7 1 2 6 6 8 4 6 8 3 8 2 3 7 7 9 5 7 9 4 9 3 4 8 Ċ 4 3 5 8 7 3 3 5 4 1 5 4 6 9 8 4 4 6 5 2 6 5 7 1 9 5 5 7 6 3 7 6 8 2 1 6 6 8 7 4 8 7 9 3 2 7 7 9 8 5 Ċ 5 8 2 6 2 5 3 7 8 2 6 9 3 7 3 6 4 8 9 3 7 1 4 8 4 7 5 9 1 4 8 2 5 9 5 8 6 1 2 5 9 3 6 1 6 9 7 2 3 6 Ċ 9 6 8 5 6 3 9 3 3 3 1 7 9 6 7 4 1 4 4 4 2 8 1 7 8 5 2 5 5 5 3 9 2 8 9 6 3 6 6 6 4 1 3 9 1 7 4 7 7 7 Ċ 3 5 3 2 3 4 1 3 5 9 4 6 4 3 4 5 2 4 6 1 5 7 5 4 5 6 3 5 7 2 6 8 6 5 6 7 4 6 8 3 7 9 7 6 7 8 5 7 9 4 Ċ 3 5 7 2 2 3 4 6 4 3 4 6 8 3 3 4 5 7 5 4 5 7 9 4 4 5 6 8 6 5 6 8 1 5 5 6 7 9 7 6 7 9 2 6 6 7 8 1 8 7 Ċ 5 3 4 7 6 4 3 8 5 2 6 4 5 8 7 5 4 9 6 3 7 5 6 9 8 6 5 1 7 4 8 6 7 1 9 7 6 2 8 5 9 7 8 2 1 8 7 3 9 6 Ċ 3 4 2 5 3 5 1 7 4 3 4 5 3 6 4 6 2 8 5 4 5 6 4 7 5 7 3 9 6 5 6 7 5 8 6 8 4 1 7 6 7 8 6 9 7 9 5 2 8 7 Ċ 4 5 3 3 2 6 6 7 1 3 5 6 4 4 3 7 7 8 2 4 6 7 5 5 4 8 8 9 3 5 7 8 6 6 5 9 9 1 4 6 8 9 7 7 6 1 1 2 5 7 Ċ 4 4 9 6 1 8 4 1 7 5 5 5 1 7 2 9 5 2 8 6 6 6 2 8 3 1 6 3 9 7 7 7 3 9 4 2 7 4 1 8 8 8 4 1 5 3 8 5 2 9 Ċ 4 6 2 4 6 1 6 9 1 5 5 7 3 5 7 2 7 1 2 6 6 8 4 6 8 3 8 2 3 7 7 9 5 7 9 4 9 3 4 8 8 1 6 8 1 5 1 4 5 9 Ċ 5 4 6 9 8 4 4 6 5 2 6 5 7 1 9 5 5 7 6 3 7 6 8 2 1 6 6 8 7 4 8 7 9 3 2 7 7 9 8 5 9 8 1 4 3 8 8 1 9 6 Ċ 6 9 3 7 3 6 4 8 9 3 7 1 4 8 4 7 5 9 1 4 8 2 5 9 5 8 6 1 2 5 9 3 6 1 6 9 7 2 3 6 1 4 7 2 7 1 8 3 4 7 Ċ 1 7 9 6 7 4 1 4 4 4 2 8 1 7 8 5 2 5 5 5 3 9 2 8 9 6 3 6 6 6 4 1 3 9 1 7 4 7 7 7 5 2 4 1 2 8 5 8 8 8 Ċ 4 6 4 3 4 5 2 4 6 1 5 7 5 4 5 6 3 5 7 2 6 8 6 5 6 7 4 6 8 3 7 9 7 6 7 8 5 7 9 4 8 1 8 7 8 9 6 8 1 5 Ċ 4 6 8 3 3 4 5 7 5 4 5 7 9 4 4 5 6 8 6 5 6 8 1 5 5 6 7 9 7 6 7 9 2 6 6 7 8 1 8 7 8 1 3 7 7 8 9 2 9 8 Ċ 6 4 5 8 7 5 4 9 6 3 7 5 6 9 8 6 5 1 7 4 8 6 7 1 9 7 6 2 8 5 9 7 8 2 1 8 7 3 9 6 1 8 9 3 2 9 8 4 1 7 Ċ 4 5 3 6 4 6 2 8 5 4 5 6 4 7 5 7 3 9 6 5 6 7 5 8 6 8 4 1 7 6 7 8 6 9 7 9 5 2 8 7 8 9 7 1 8 1 6 3 9 8 Ċ 5 6 4 4 3 7 7 8 2 4 6 7 5 5 4 8 8 9 3 5 7 8 6 6 5 9 9 1 4 6 8 9 7 7 6 1 1 2 5 7 9 1 8 8 7 2 2 3 6 8 Ċ 5 5 1 7 2 9 5 2 8 6 6 6 2 8 3 1 6 3 9 7 7 7 3 9 4 2 7 4 1 8 8 8 4 1 5 3 8 5 2 9 9 9 5 2 6 4 9 6 3 1 Ċ 5 7 3 5 7 2 7 1 2 6 6 8 4 6 8 3 8 2 3 7 7 9 5 7 9 4 9 3 4 8 8 1 6 8 1 5 1 4 5 9 9 2 7 9 2 6 2 5 6 1 Ċ 6 5 7 1 9 5 5 7 6 3 7 6 8 2 1 6 6 8 7 4 8 7 9 3 2 7 7 9 8 5 9 8 1 4 3 8 8 1 9 6 1 9 2 5 4 9 9 2 1 7 Ċ 7 1 4 8 4 7 5 9 1 4 8 2 5 9 5 8 6 1 2 5 9 3 6 1 6 9 7 2 3 6 1 4 7 2 7 1 8 3 4 7 2 5 8 3 8 2 9 4 5 8 Ċ 2 8 1 7 8 5 2 5 5 5 3 9 2 8 9 6 3 6 6 6 4 1 3 9 1 7 4 7 7 7 5 2 4 1 2 8 5 8 8 8 6 3 5 2 3 9 6 9 9 9 Ċ 5 7 5 4 5 6 3 5 7 2 6 8 6 5 6 7 4 6 8 3 7 9 7 6 7 8 5 7 9 4 8 1 8 7 8 9 6 8 1 5 9 2 9 8 9 1 7 9 2 6 Ċ 5 7 9 4 4 5 6 8 6 5 6 8 1 5 5 6 7 9 7 6 7 9 2 6 6 7 8 1 8 7 8 1 3 7 7 8 9 2 9 8 9 2 4 8 8 9 1 3 1 9 Ċ 7 5 6 9 8 6 5 1 7 4 8 6 7 1 9 7 6 2 8 5 9 7 8 2 1 8 7 3 9 6 1 8 9 3 2 9 8 4 1 7 2 9 1 4 3 1 9 5 2 8 Ċ 5 6 4 7 5 7 3 9 6 5 6 7 5 8 6 8 4 1 7 6 7 8 6 9 7 9 5 2 8 7 8 9 7 1 8 1 6 3 9 8 9 1 8 2 9 2 7 4 1 9 Ċ 6 7 5 5 4 8 8 9 3 5 7 8 6 6 5 9 9 1 4 6 8 9 7 7 6 1 1 2 5 7 9 1 8 8 7 2 2 3 6 8 1 2 9 9 8 3 3 4 7 9 Ċ Ċ Equ ipped Ġwith Ġthe Ġfull Ġmap , Ġyou Ġcan Ġnow Ġfind Ġa Ġpath Ġfrom Ġthe Ġtop Ġleft Ġcorner Ġto Ġthe Ġbottom Ġright Ġcorner Ġwith Ġthe Ġlowest Ġtotal Ġrisk : ĊĊ 1 1 6 3 7 5 1 7 4 2 2 2 7 4 8 6 2 8 5 3 3 3 8 5 9 7 3 9 6 4 4 4 9 6 1 8 4 1 7 5 5 5 1 7 2 9 5 2 8 6 Ċ 1 3 8 1 3 7 3 6 7 2 2 4 9 2 4 8 4 7 8 3 3 5 1 3 5 9 5 8 9 4 4 6 2 4 6 1 6 9 1 5 5 7 3 5 7 2 7 1 2 6 Ċ 2 1 3 6 5 1 1 3 2 8 3 2 4 7 6 2 2 4 3 9 4 3 5 8 7 3 3 5 4 1 5 4 6 9 8 4 4 6 5 2 6 5 7 1 9 5 5 7 6 3 Ċ 3 6 9 4 9 3 1 5 6 9 4 7 1 5 1 4 2 6 7 1 5 8 2 6 2 5 3 7 8 2 6 9 3 7 3 6 4 8 9 3 7 1 4 8 4 7 5 9 1 4 Ċ 7 4 6 3 4 1 7 1 1 1 8 5 7 4 5 2 8 2 2 2 9 6 8 5 6 3 9 3 3 3 1 7 9 6 7 4 1 4 4 4 2 8 1 7 8 5 2 5 5 5 Ċ 1 3 1 9 1 2 8 1 3 7 2 4 2 1 2 3 9 2 4 8 3 5 3 2 3 4 1 3 5 9 4 6 4 3 4 5 2 4 6 1 5 7 5 4 5 6 3 5 7 2 Ċ 1 3 5 9 9 1 2 4 2 1 2 4 6 1 1 2 3 5 3 2 3 5 7 2 2 3 4 6 4 3 4 6 8 3 3 4 5 7 5 4 5 7 9 4 4 5 6 8 6 5 Ċ 3 1 2 5 4 2 1 6 3 9 4 2 3 6 5 3 2 7 4 1 5 3 4 7 6 4 3 8 5 2 6 4 5 8 7 5 4 9 6 3 7 5 6 9 8 6 5 1 7 4 Ċ 1 2 9 3 1 3 8 5 2 1 2 3 1 4 2 4 9 6 3 2 3 4 2 5 3 5 1 7 4 3 4 5 3 6 4 6 2 8 5 4 5 6 4 7 5 7 3 9 6 5 Ċ 2 3 1 1 9 4 4 5 8 1 3 4 2 2 1 5 5 6 9 2 4 5 3 3 2 6 6 7 1 3 5 6 4 4 3 7 7 8 2 4 6 7 5 5 4 8 8 9 3 5 Ċ 2 2 7 4 8 6 2 8 5 3 3 3 8 5 9 7 3 9 6 4 4 4 9 6 1 8 4 1 7 5 5 5 1 7 2 9 5 2 8 6 6 6 2 8 3 1 6 3 9 7 Ċ 2 4 9 2 4 8 4 7 8 3 3 5 1 3 5 9 5 8 9 4 4 6 2 4 6 1 6 9 1 5 5 7 3 5 7 2 7 1 2 6 6 8 4 6 8 3 8 2 3 7 Ċ 3 2 4 7 6 2 2 4 3 9 4 3 5 8 7 3 3 5 4 1 5 4 6 9 8 4 4 6 5 2 6 5 7 1 9 5 5 7 6 3 7 6 8 2 1 6 6 8 7 4 Ċ 4 7 1 5 1 4 2 6 7 1 5 8 2 6 2 5 3 7 8 2 6 9 3 7 3 6 4 8 9 3 7 1 4 8 4 7 5 9 1 4 8 2 5 9 5 8 6 1 2 5 Ċ 8 5 7 4 5 2 8 2 2 2 9 6 8 5 6 3 9 3 3 3 1 7 9 6 7 4 1 4 4 4 2 8 1 7 8 5 2 5 5 5 3 9 2 8 9 6 3 6 6 6 Ċ 2 4 2 1 2 3 9 2 4 8 3 5 3 2 3 4 1 3 5 9 4 6 4 3 4 5 2 4 6 1 5 7 5 4 5 6 3 5 7 2 6 8 6 5 6 7 4 6 8 3 Ċ 2 4 6 1 1 2 3 5 3 2 3 5 7 2 2 3 4 6 4 3 4 6 8 3 3 4 5 7 5 4 5 7 9 4 4 5 6 8 6 5 6 8 1 5 5 6 7 9 7 6 Ċ 4 2 3 6 5 3 2 7 4 1 5 3 4 7 6 4 3 8 5 2 6 4 5 8 7 5 4 9 6 3 7 5 6 9 8 6 5 1 7 4 8 6 7 1 9 7 6 2 8 5 Ċ 2 3 1 4 2 4 9 6 3 2 3 4 2 5 3 5 1 7 4 3 4 5 3 6 4 6 2 8 5 4 5 6 4 7 5 7 3 9 6 5 6 7 5 8 6 8 4 1 7 6 Ċ 3 4 2 2 1 5 5 6 9 2 4 5 3 3 2 6 6 7 1 3 5 6 4 4 3 7 7 8 2 4 6 7 5 5 4 8 8 9 3 5 7 8 6 6 5 9 9 1 4 6 Ċ 3 3 8 5 9 7 3 9 6 4 4 4 9 6 1 8 4 1 7 5 5 5 1 7 2 9 5 2 8 6 6 6 2 8 3 1 6 3 9 7 7 7 3 9 4 2 7 4 1 8 Ċ 3 5 1 3 5 9 5 8 9 4 4 6 2 4 6 1 6 9 1 5 5 7 3 5 7 2 7 1 2 6 6 8 4 6 8 3 8 2 3 7 7 9 5 7 9 4 9 3 4 8 Ċ 4 3 5 8 7 3 3 5 4 1 5 4 6 9 8 4 4 6 5 2 6 5 7 1 9 5 5 7 6 3 7 6 8 2 1 6 6 8 7 4 8 7 9 3 2 7 7 9 8 5 Ċ 5 8 2 6 2 5 3 7 8 2 6 9 3 7 3 6 4 8 9 3 7 1 4 8 4 7 5 9 1 4 8 2 5 9 5 8 6 1 2 5 9 3 6 1 6 9 7 2 3 6 Ċ 9 6 8 5 6 3 9 3 3 3 1 7 9 6 7 4 1 4 4 4 2 8 1 7 8 5 2 5 5 5 3 9 2 8 9 6 3 6 6 6 4 1 3 9 1 7 4 7 7 7 Ċ 3 5 3 2 3 4 1 3 5 9 4 6 4 3 4 5 2 4 6 1 5 7 5 4 5 6 3 5 7 2 6 8 6 5 6 7 4 6 8 3 7 9 7 6 7 8 5 7 9 4 Ċ 3 5 7 2 2 3 4 6 4 3 4 6 8 3 3 4 5 7 5 4 5 7 9 4 4 5 6 8 6 5 6 8 1 5 5 6 7 9 7 6 7 9 2 6 6 7 8 1 8 7 Ċ 5 3 4 7 6 4 3 8 5 2 6 4 5 8 7 5 4 9 6 3 7 5 6 9 8 6 5 1 7 4 8 6 7 1 9 7 6 2 8 5 9 7 8 2 1 8 7 3 9 6 Ċ 3 4 2 5 3 5 1 7 4 3 4 5 3 6 4 6 2 8 5 4 5 6 4 7 5 7 3 9 6 5 6 7 5 8 6 8 4 1 7 6 7 8 6 9 7 9 5 2 8 7 Ċ 4 5 3 3 2 6 6 7 1 3 5 6 4 4 3 7 7 8 2 4 6 7 5 5 4 8 8 9 3 5 7 8 6 6 5 9 9 1 4 6 8 9 7 7 6 1 1 2 5 7 Ċ 4 4 9 6 1 8 4 1 7 5 5 5 1 7 2 9 5 2 8 6 6 6 2 8 3 1 6 3 9 7 7 7 3 9 4 2 7 4 1 8 8 8 4 1 5 3 8 5 2 9 Ċ 4 6 2 4 6 1 6 9 1 5 5 7 3 5 7 2 7 1 2 6 6 8 4 6 8 3 8 2 3 7 7 9 5 7 9 4 9 3 4 8 8 1 6 8 1 5 1 4 5 9 Ċ 5 4 6 9 8 4 4 6 5 2 6 5 7 1 9 5 5 7 6 3 7 6 8 2 1 6 6 8 7 4 8 7 9 3 2 7 7 9 8 5 9 8 1 4 3 8 8 1 9 6 Ċ 6 9 3 7 3 6 4 8 9 3 7 1 4 8 4 7 5 9 1 4 8 2 5 9 5 8 6 1 2 5 9 3 6 1 6 9 7 2 3 6 1 4 7 2 7 1 8 3 4 7 Ċ 1 7 9 6 7 4 1 4 4 4 2 8 1 7 8 5 2 5 5 5 3 9 2 8 9 6 3 6 6 6 4 1 3 9 1 7 4 7 7 7 5 2 4 1 2 8 5 8 8 8 Ċ 4 6 4 3 4 5 2 4 6 1 5 7 5 4 5 6 3 5 7 2 6 8 6 5 6 7 4 6 8 3 7 9 7 6 7 8 5 7 9 4 8 1 8 7 8 9 6 8 1 5 Ċ 4 6 8 3 3 4 5 7 5 4 5 7 9 4 4 5 6 8 6 5 6 8 1 5 5 6 7 9 7 6 7 9 2 6 6 7 8 1 8 7 8 1 3 7 7 8 9 2 9 8 Ċ 6 4 5 8 7 5 4 9 6 3 7 5 6 9 8 6 5 1 7 4 8 6 7 1 9 7 6 2 8 5 9 7 8 2 1 8 7 3 9 6 1 8 9 3 2 9 8 4 1 7 Ċ 4 5 3 6 4 6 2 8 5 4 5 6 4 7 5 7 3 9 6 5 6 7 5 8 6 8 4 1 7 6 7 8 6 9 7 9 5 2 8 7 8 9 7 1 8 1 6 3 9 8 Ċ 5 6 4 4 3 7 7 8 2 4 6 7 5 5 4 8 8 9 3 5 7 8 6 6 5 9 9 1 4 6 8 9 7 7 6 1 1 2 5 7 9 1 8 8 7 2 2 3 6 8 Ċ 5 5 1 7 2 9 5 2 8 6 6 6 2 8 3 1 6 3 9 7 7 7 3 9 4 2 7 4 1 8 8 8 4 1 5 3 8 5 2 9 9 9 5 2 6 4 9 6 3 1 Ċ 5 7 3 5 7 2 7 1 2 6 6 8 4 6 8 3 8 2 3 7 7 9 5 7 9 4 9 3 4 8 8 1 6 8 1 5 1 4 5 9 9 2 7 9 2 6 2 5 6 1 Ċ 6 5 7 1 9 5 5 7 6 3 7 6 8 2 1 6 6 8 7 4 8 7 9 3 2 7 7 9 8 5 9 8 1 4 3 8 8 1 9 6 1 9 2 5 4 9 9 2 1 7 Ċ 7 1 4 8 4 7 5 9 1 4 8 2 5 9 5 8 6 1 2 5 9 3 6 1 6 9 7 2 3 6 1 4 7 2 7 1 8 3 4 7 2 5 8 3 8 2 9 4 5 8 Ċ 2 8 1 7 8 5 2 5 5 5 3 9 2 8 9 6 3 6 6 6 4 1 3 9 1 7 4 7 7 7 5 2 4 1 2 8 5 8 8 8 6 3 5 2 3 9 6 9 9 9 Ċ 5 7 5 4 5 6 3 5 7 2 6 8 6 5 6 7 4 6 8 3 7 9 7 6 7 8 5 7 9 4 8 1 8 7 8 9 6 8 1 5 9 2 9 8 9 1 7 9 2 6 Ċ 5 7 9 4 4 5 6 8 6 5 6 8 1 5 5 6 7 9 7 6 7 9 2 6 6 7 8 1 8 7 8 1 3 7 7 8 9 2 9 8 9 2 4 8 8 9 1 3 1 9 Ċ 7 5 6 9 8 6 5 1 7 4 8 6 7 1 9 7 6 2 8 5 9 7 8 2 1 8 7 3 9 6 1 8 9 3 2 9 8 4 1 7 2 9 1 4 3 1 9 5 2 8 Ċ 5 6 4 7 5 7 3 9 6 5 6 7 5 8 6 8 4 1 7 6 7 8 6 9 7 9 5 2 8 7 8 9 7 1 8 1 6 3 9 8 9 1 8 2 9 2 7 4 1 9 Ċ 6 7 5 5 4 8 8 9 3 5 7 8 6 6 5 9 9 1 4 6 8 9 7 7 6 1 1 2 5 7 9 1 8 8 7 2 2 3 6 8 1 2 9 9 8 3 3 4 7 9 Ċ Ċ The Ġtotal Ġrisk Ġof Ġthis Ġpath Ġis Ġ 3 1 5 Ġ( the Ġstarting Ġposition Ġis Ġstill Ġnever Ġentered , Ġso Ġits Ġrisk Ġis Ġnot Ġcounted ). Ċ Ċ Using Ġthe Ġfull Ġmap , Ġwhat Ġis Ġthe Ġlowest Ġtotal Ġrisk Ġof Ġany Ġpath Ġfrom Ġthe Ġtop Ġleft Ġto Ġthe Ġbottom Ġright ? ĊĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġget Result Part 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpanded Map Ġ= Ġ( 0 Ġuntil Ġch it ons . size Ġ* Ġ 5 ). map Ġ{ Ġnew Y Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġch it ons [ 0 ]. size Ġ* Ġ 5 ) Ġ. map Ġ{ Ġnew X Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Y Ġ= Ġnew Y Ġ% Ġ( ch it ons . last Index Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal X Ġ= Ġnew X Ġ% Ġ( ch it ons [ 0 ]. last Index Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Value Ġ= Ġch it ons [ original Y ][ original X ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Loop ed Number (( original Value Ġ+ Ġnew X Ġ/ Ġch it ons [ 0 ]. size Ġ+ Ġnew Y Ġ/ Ġch it ons . size )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. to IntArray () ĊĠĠĠĠĠĠĠ Ġ}. to Typed Array () ĊĊĠĠĠĠĠĠĠ Ġval Ġroute Ġ= Ġa Star ( expanded Map , Ġstart , ĠPoint ( expanded Map [ 0 ]. last Index , Ġ Ġexpanded Map . last Index )) ĊĠĠĠĠĠĠĠ Ġprint Route ( expanded Map , Ġroute ) ĊĠĠĠĠĠĠĠ Ġprintln ( route . drop ( 1 ). sum Of Ġ{ Ġpoint Ġ-> Ġexpanded Map [ point . y ][ point . x ] Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Loop ed Number ( original Number : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( original Number Ġ<= Ġ 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġoriginal Number ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal Number Ġ% Ġ 9 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Neighbors ( point : ĠPoint , Ġrisk Map : ĠArray < IntArray >): ĠList < Point > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( point . x Ġ- Ġ 1 .. point . x Ġ+ Ġ 1 ). flatMap Ġ{ Ġx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( point . y Ġ- Ġ 1 .. point . y Ġ+ Ġ 1 ). filter Ġ{ Ġy Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ>= Ġ 0 Ġ&& Ġy Ġ>= Ġ 0 Ġ&& Ġx Ġ<= Ġrisk Map [ 0 ]. last Index Ġ&& Ġy Ġ<= Ġrisk Map . last Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( x Ġ== Ġpoint . x Ġ|| Ġy Ġ== Ġpoint . y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( x Ġ!= Ġpoint . x Ġ|| Ġy Ġ!= Ġpoint . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġy Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }