import Ġkotlin . math . abs Ċ import Ġkotlin . system . measure Time Millis Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġmillis Ġ= Ġmeasure Time Millis Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclass Loader Ġ= ĠNan obot :: class . java . class Loader ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġclass Loader . getResource (" input . txt "). read Text () ĊĠĠĠĠĠĠĠ Ġval Ġnan obot s Ġ= ĠNan obot . parse Many ( input ) ĊĠĠĠĠĠĠĠ Ġprintln ( Nan obot . in Range Of Str on gest ( nan obot s ). size ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprintln (" in Ġ${ millis } ms ") Ċ } Ċ Ċ data Ġclass ĠCoord ( val Ġx : ĠInt , Ġval Ġy : ĠInt , Ġval Ġz : ĠInt ) Ġ{ ĊĠĠĠ Ġfun Ġdistance From ( other : ĠCoord ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġabs ( x Ġ- Ġother . x ) Ġ+ Ġabs ( y Ġ- Ġother . y ) Ġ+ Ġabs ( z Ġ- Ġother . z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"< $ x ,$ y ,$ z >" ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠNan obot ( val Ġpos : ĠCoord , Ġval Ġrange : ĠInt ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" pos =$ pos , Ġr =$ range " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġin Range Of Str on gest ( nan obot s : ĠList < Nan obot >): ĠList < Nan obot > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr on gest Ġ= Ġnan obot s . max By Ġ{ Ġit . range Ġ} !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnan obot s . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . pos . distance From ( str on gest . pos ) Ġ<= Ġstr on gest . range ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse Many ( input : ĠString ): ĠList < Nan obot > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinput . lines (). map Ġ{ Ġparse One ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse One ( input : ĠString ): ĠNan obot Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġre . match Ent ire ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠException (" Parse Ġerror Ġat Ġ$ input ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠNan obot ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos Ġ= ĠCoord ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġmatch . group Values [ 1 ]. toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġmatch . group Values [ 2 ]. toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġz Ġ= Ġmatch . group Values [ 3 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange Ġ= Ġmatch . group Values [ 4 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġre Ġ= ĠRegex ("^ pos =< ([ 0 - 9 - ]+ ), ([ 0 - 9 - ]+ ), ([ 0 - 9 - ]+) >, Ġr = ([ 0 - 9 - ]+ )$ ") ĊĠĠĠ Ġ} Ċ }