package Ġorg . b 0 n 5 4 1 . k ict ac lo e Ċ Ċ class ĠMove ( val Ġplayer : ĠPlayer , Ġval Ġfield : ĠCoordinate ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( move : ĠString ): ĠMove Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmove Parts Ġ= Ġmove . split (": ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( set Of (" X ", Ġ" O "). contains ( move Parts [ 0 ])) Ġ{ Ġ" Player Ġmust Ġbe Ġeither ĠX Ġor ĠO " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMove ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer . valueOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Parts [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĠCoordinate ( move Parts [ 1 ]. toInt (), Ġmove Parts [ 2 ]. toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠPlayer Ġ{ ĊĠĠĠ ĠX , ĊĠĠĠ ĠO Ċ } Ċ Ċ data Ġclass ĠCoordinate ( val Ġx : ĠInt , Ġval Ġy : ĠInt )