package Ġio . m stream . board game engine Ċ Ċ data Ġclass ĠPosition Ġprivate Ġconstructor ( val Ġx : ĠInt , Ġval Ġy : ĠInt ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpositions Ġ= ĠarrayOf Null s < Position >( 1 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom C ords ( x : ĠInt , Ġy : ĠInt ): ĠPosition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġ< Ġ 0 Ġ|| Ġy Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" cord s Ġcan 't Ġbe Ġnegative ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġ> Ġ 9 Ġ|| Ġy Ġ> Ġ 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" cord s Ġcan 't Ġbe Ġbigger Ġthan Ġ 9 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġx Ġ* Ġ 1 0 Ġ+ Ġy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġpositions [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Position Ġ= ĠPosition ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositions [ index ] Ġ= Ġnew Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ