package Ġcom . r art works . engine . utils Ċ Ċ /** Ċ Ġ* ĠLike Ġ[ forEach ], Ġbut Ġit Ġdoesn 't Ġallocate Ġanything . Ċ Ġ*/ Ċ inline Ġfun Ġ< T : ĠAny > ĠList < T >. fast ForEach ( action : Ġ( T ) Ġ Ġ-> Ġ( Unit )) Ġ{ Ċ ĉ for Ġ( i Ġin Ġ 0 .. this . size Ġ- Ġ 1 ) Ġ{ Ċĉ ĉ val Ġelement Ġ= Ġthis [ i ] Ċĉ ĉ action ( element ) Ċ ĉ } Ċ } Ċ Ċ /** Ċ Ġ* ĠLike Ġ[ forEach ], Ġbut Ġit Ġdoesn 't Ġallocate Ġanything . Ċ Ġ*/ Ċ inline Ġfun Ġ< T : ĠAny > ĠArray < T >. fast ForEach ( action : Ġ( T ) Ġ Ġ-> Ġ( Unit )) Ġ{ Ċ ĉ for Ġ( i Ġin Ġ 0 .. this . size Ġ- Ġ 1 ) Ġ{ Ċĉ ĉ val Ġelement Ġ= Ġthis [ i ] Ċĉ ĉ action ( element ) Ċ ĉ } Ċ } Ċ Ċ /** Ċ Ġ* ĠLike Ġ[ forEach ], Ġbut Ġit Ġdoesn 't Ġallocate Ġanything . Ċ Ġ*/ Ċ inline Ġfun Ġ< T : ĠAny > ĠList < T >. fast ForEach Indexed ( action : Ġ( Int , ĠT ) Ġ Ġ-> Ġ( Unit )) Ġ{ Ċ ĉ for Ġ( i Ġin Ġ 0 .. this . size Ġ- Ġ 1 ) Ġ{ Ċĉ ĉ val Ġelement Ġ= Ġthis [ i ] Ċĉ ĉ action ( i , Ġelement ) Ċ ĉ } Ċ } ĊĊ Ċ /** Ċ Ġ* ĠLike Ġ[ min By ], Ġbut Ġit Ġdoesn 't Ġallocate Ġanything . Ċ Ġ*/ Ċ inline Ġfun Ġ< T : ĠAny > ĠList < T >. fast Min By ( criteria : Ġ( T ) Ġ Ġ-> Ġ( Float )): ĠT Ġ{ Ċ ĉ var Ġmin Ġ= Ġthis . first () Ġ; Ġvar Ġmin Value Ġ= Ġcriteria ( min ) Ċ ĉ this . fast ForEach Ġ{ Ċĉ ĉ val Ġvalue Ġ= Ġcriteria ( it ) ĊĊĉ ĉ if Ġ( value Ġ< Ġmin Value ) Ġ{ Ċĉĉ ĉ min Ġ= Ġit Ġ; ĉ min Value Ġ= Ġvalue Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ return Ġmin Ċ } Ċ Ċ /** Ċ Ġ* ĠLike Ġ[ max By ], Ġbut Ġit Ġdoesn 't Ġallocate Ġanything . Ċ Ġ*/ Ċ inline Ġfun Ġ< T : ĠAny > ĠList < T >. fast Max By ( criteria : Ġ( T ) Ġ Ġ-> Ġ( Float )): ĠT Ġ{ Ċ ĉ var Ġmax Ġ= Ġthis . first () Ġ; Ġvar ĠmaxValue Ġ= Ġcriteria ( max ) Ċ ĉ this . fast ForEach Ġ{ Ċĉ ĉ val Ġvalue Ġ= Ġcriteria ( it ) Ċĉ ĉ if Ġ( value Ġ> ĠmaxValue ) Ġ{ Ċĉĉ ĉ max Ġ= Ġit Ġ; ĠmaxValue Ġ= Ġvalue Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ return Ġmax Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġa Ġrandom Ġelement Ġof Ġthe Ġcollection . Ċ Ġ*/ Ċ fun Ġ< T : ĠAny > ĠList < T >. getRandom Element (): ĠT Ġ{ Ċ ĉ val Ġindex Ġ= Ġ 0 . to Random ( this . count () Ġ- Ġ 1 ) Ċ ĉ return Ġthis [ index ] Ċ } Ċ