package Ġcom . ale ss andro def r ances co . android utils Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ /** Ċ Ġ* ĠThe Ġdistance Ġbetween Ġtwo Ġpoints Ċ Ġ*/ Ċ fun Ġdistance ( x 1 : ĠDouble , Ġy 1 : ĠDouble , Ġx 2 : ĠDouble , Ġy 2 : ĠDouble ): ĠDouble Ġ{ ĊĊĠĠĠ Ġreturn ĠMath . sqrt ((( x 2 Ġ- Ġx 1 ) Ġ* Ġ( x 2 Ġ- Ġx 1 ) Ġ+ Ġ( y 2 Ġ- Ġy 1 ) Ġ* Ġ( y 2 Ġ- Ġy 1 ))) Ċ } Ċ Ċ /** Ċ Ġ* ĠThe Ġdistance Ġbetween Ġtwo Ġpoints Ċ Ġ*/ Ċ fun Ġdistance ( x 1 : ĠInt , Ġy 1 : ĠInt , Ġx 2 : ĠInt , Ġy 2 : ĠInt ): ĠDouble Ġ{ ĊĠĠĠ Ġreturn Ġdistance ( x 1 . toDouble (), Ġy 1 . toDouble (), Ġx 2 . toDouble (), Ġy 2 . toDouble ()) Ċ } Ċ Ċ /** Ċ Ġ* ĠThe Ġdistance Ġbetween Ġtwo Ġpoints Ċ Ġ*/ Ċ fun Ġdistance ( x 1 : ĠFloat , Ġy 1 : ĠFloat , Ġx 2 : ĠFloat , Ġy 2 : ĠFloat ): ĠDouble Ġ{ ĊĠĠĠ Ġreturn Ġdistance ( x 1 . toDouble (), Ġy 1 . toDouble (), Ġx 2 . toDouble (), Ġy 2 . toDouble ()) Ċ } Ċ Ċ /** Ċ Ġ* ĠReturn Ġthe Ġfib onacci Ġsequence Ġnumbers Ġuntil Ġ[ upper Bound ] Ċ Ġ*/ Ċ fun Ġfib onacci ( upper Bound : ĠInt ): ĠList < Int >{ ĊĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Int >() ĊĠĠĠ Ġlist . add ( 0 ) ĊĠĠĠ Ġlist . add ( 1 ) ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. upper Bound ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlist . add ( list [ i - 2 ] Ġ+ Ġlist [ i - 1 ]) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġlist Ċ } ĊĊ Ċ /** Ċ Ġ* ĠParse Ġthe Ġ[ json ] Ġstring Ġinto Ġthe Ġspecified Ġclass Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT > ĠGson . fromJson ( json : ĠString ) Ġ= Ġthis . fromJson < T >( json , Ġobject Ġ: ĠType Token < T >() Ġ{} . type ) Ċ Ċ /** Ċ Ġ* ĠEncode Ġthe Ġobject Ġas ĠJSON Ġstring Ċ Ġ*/ Ċ fun ĠAny . toJson (): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠG SON . toJson ( this ) Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġan Ġexact Ġcopy Ġof Ġthe Ġobject Ċ Ġ* ĠWARNING : ĠV ERY ĠS LOW Ċ Ġ*/ Ċ fun Ġ< T Ġ: ĠAny > ĠT . deep Copy (): ĠT Ġ{ ĊĠĠĠ Ġreturn ĠG SON . fromJson ( G SON . toJson ( this ), Ġthis . java Class ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCap ital ize Ġeach Ġword Ġin Ġthe Ġstring Ċ Ġ* ĠEx : Ġ" hi Ġall , Ġi 'm Ġa Ġrepository " Ġ-> Ġ" Hi ĠAll , ĠI 'm ĠA ĠRepository " Ċ Ġ*/ Ċ fun ĠString . capitalize Each Word (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġthis . toLowerCase ( Locale . UK ). split (' Ġ'). join ToString (" Ġ") Ġ{ Ġit . capitalize () Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠReturn Ġ[ min ] Ġif Ġthe Ġnumber Ġis Ġ< Ġ[ min ] Ċ Ġ* Ġ[ max ] Ġif Ġthe Ġnumber Ġis Ġ> Ġ[ max ] Ċ Ġ* Ġthe Ġnumber Ġitself Ġotherwise Ċ Ġ*/ Ċ fun ĠInt . clamp ( min : ĠInt , Ġmax : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġthis Ġ< Ġmin Ġ-> Ġmin ĊĠĠĠĠĠĠĠ Ġthis Ġ> Ġmax Ġ-> Ġmax ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠReturn Ġ[ min ] Ġif Ġthe Ġnumber Ġis Ġ< Ġ[ min ] Ċ Ġ* Ġ[ max ] Ġif Ġthe Ġnumber Ġis Ġ> Ġ[ max ] Ċ Ġ* Ġthe Ġnumber Ġitself Ġotherwise Ċ Ġ*/ Ċ fun ĠDouble . clamp ( min : ĠDouble , Ġmax : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġthis Ġ< Ġmin Ġ-> Ġmin ĊĠĠĠĠĠĠĠ Ġthis Ġ> Ġmax Ġ-> Ġmax ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠThe ĠTAG Ġto Ġuse Ġfor Ġdebug Ġpurposes Ġin ĠLog . d ( TAG , Ġ" message ") Ċ Ġ*/ Ċ val ĠAny ?. TAG : ĠString ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠclassName Ġ= Ġ" null " ĊĠĠĠĠĠĠĠ Ġthis ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġthis :: class . java . name . substring After Last (".") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠclassName ĊĠĠĠ Ġ} Ċ Ċ /** ĠRemove Ġthe Ġchars Ġin Ġ[ to Remove ] Ġfrom Ġthis ĠString Ġ( e . g . Ġ" abcd ". remove Chars (" bc ") Ġ== Ġ" ad ") Ġ*/ Ċ fun ĠString . remove Chars ( to Remove : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġthis . replace ( Regex (" [$ to Remove ] "), Ġ"") Ċ }