package Ġio . github . to mpl um . libs . math . map Ċ Ċ import Ġio . github . to mpl um . libs . math . point . Point 2 D Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġis Ġdesigned Ġfor Ġinheritance . Ċ Ġ* Ċ Ġ* ĠL ots Ġof Ġthe Ġdays Ġinvolve Ġthe Ġconcept Ġof Ġa Ġ' Map ' Ġor Ġa Ġ' M aze ' Ġin Ġwhich Ġthe Ġshortest Ġpath Ġmust Ġbe Ġfound Ġwhile Ċ Ġ* Ġmeeting Ġday - specific Ġcriteria . ĠA Ġcart esian - style Ġgraph Ġis Ġinternally Ġmaintained Ġthat Ġmaps Ġtiles Ġto Ġ[ Point 2 D ] Ċ Ġ* Ġcoordinates . Ċ Ġ* Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġ[ Map Tile ] Ġthat Ġwill Ġbe Ġmapped . Ċ Ġ*/ Ċ abstract Ġclass ĠAd vent Map 2 D < T : ĠMap Tile <* >> : ĠAd vent Map < Point 2 D , ĠT >() Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġall Ġthe Ġtiles Ġthat Ġare Ġor th og on ally Ġadjacent Ġto Ġthe Ġgiven Ġ[ positions ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġpositions ĠThe Ġset Ġof Ġpositions Ġwhose Ġadjacent Ġtiles Ġwill Ġbe Ġfound . ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġ[ Map ] Ġof Ġor th og on ally - adjacent Ġ[ Point 2 D ] Ġand Ġtheir Ġrespective Ġtiles Ġ[ T ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġadjacent Tiles Or thogonal ( positions : ĠSet < Point 2 D >): ĠMap < Point 2 D , ĠT > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpositions . flatMap Ġ{ Ġpos Ġ-> Ġpos . orth og on ally Adjacent () Ġ}. associate With ( this :: get Tile ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġminimum Ġx - ord inate Ġcurrently Ġrecorded Ġin Ġthe Ġmap . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġx Min (): ĠInt ? Ġ= Ġdata . keys . min By OrNull Ġ{ Ġpos Ġ-> Ġpos . x Ġ} ?. x ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġminimum Ġy - ord inate Ġcurrently Ġrecorded Ġin Ġthe Ġmap . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġy Min (): ĠInt ? Ġ= Ġdata . keys . min By OrNull Ġ{ Ġpos Ġ-> Ġpos . y Ġ} ?. y ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġmaximum Ġx - ord inate Ġcurrently Ġrecorded Ġin Ġthe Ġmap . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġx Max (): ĠInt ? Ġ= Ġdata . keys . max By OrNull Ġ{ Ġpos Ġ-> Ġpos . x Ġ} ?. x ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġmaximum Ġy - ord inate Ġcurrently Ġrecorded Ġin Ġthe Ġmap . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġy Max (): ĠInt ? Ġ= Ġdata . keys . max By OrNull Ġ{ Ġpos Ġ-> Ġpos . y Ġ} ?. y ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġcart esian Ġgraph Ġstyle Ġvisual Ġrepresentation Ġof Ġthe Ġ[ data ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġy Min Ġ= Ġy Min () Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġy Max Ġ= Ġy Max () Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġx Min Ġ= Ġx Min () Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġx Max Ġ= Ġx Max () Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġ( y Min .. y Max ). join ToString ("\ n ") Ġ{ Ġy Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( x Min .. x Max ). join ToString (" Ġ") Ġ{ Ġx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . get OrDefault ( Point 2 D ( x , Ġy ), Ġ" Ġ"). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. plus ("\ n ") ĊĠĠĠ Ġ} Ċ }