package Ġcom . j ace kp ie tras . zoo . domain . model Ċ Ċ import Ġcom . j ace kp ie tras . core . Point D Ċ import Ġcom . j ace kp ie tras . zoo . domain . business . Intervals ĊĊ Ċ sealed Ġclass ĠVis ited Road Edge ( ĊĠĠĠ Ġopen Ġval Ġfrom : ĠPoint D , ĊĠĠĠ Ġopen Ġval Ġto : ĠPoint D , Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġreversed (): ĠVis ited Road Edge Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFull y Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFull y ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġ= Ġto , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġ= Ġfrom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPart ially Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPart ially ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġ= Ġto , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġ= Ġfrom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisited Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable ListOf < Closed Range < Double >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisited . forEach Ġ{ Ġstart , Ġend Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd (( 1 Ġ- Ġend ) .. ( 1 Ġ- Ġstart )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreverse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠInter vals ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠPart ially ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġfrom : ĠPoint D , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġto : ĠPoint D , ĊĠĠĠĠĠĠĠ Ġval Ġvisited : ĠInter vals < Double >, ĊĠĠĠ Ġ) Ġ: ĠVis ited Road Edge ( from , Ġto ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġto Path (): ĠList < Map Item Entity . Path Entity > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarray Ġ= Ġvisited . toDouble Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmutable ListOf < Map Item Entity . Path Entity >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ( array . size ) Ġstep Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= Ġto Ġ- Ġfrom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmove Start Ġ= Ġdiff Ġ* Ġarray [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmove End Ġ= Ġdiff Ġ* Ġarray [ i Ġ+ Ġ 1 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap Item Entity . Path Entity ( listOf ( from Ġ+ Ġmove Start , Ġfrom Ġ+ Ġmove End )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarray Ġ= Ġvisited . toDouble Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ( array . size ) Ġstep Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ("% . 6 f ". format ( array [ i ]) Ġ+ Ġ" ->" Ġ+ Ġ"% . 6 f ". format ( array [ i Ġ+ Ġ 1 ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"[ ${ from . x }, Ġ${ from . y }] Ġ-> Ġ[ ${ to . x }, Ġ${ to . y }] Ġ|| Ġ$ result " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠFull y ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġfrom : ĠPoint D , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġto : ĠPoint D , ĊĠĠĠ Ġ) Ġ: ĠVis ited Road Edge ( from , Ġto ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġto Path (): ĠMap Item Entity . Path Entity Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap Item Entity . Path Entity ( listOf ( from , Ġto )) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"[ ${ from . x }, Ġ${ from . y }] Ġ-> Ġ[ ${ to . x }, Ġ${ to . y }] Ġ|| ĠFull y " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ