class ĠGame ( var Ġgrid : ĠArray < Array < Player >> Ġ= ĠArray ( 3 ) Ġ{ ĠArray ( 3 ) Ġ{ Player . N } Ġ}) Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠPlayer ( var Ġplayer : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠX (" X "), ĊĠĠĠĠĠĠĠ ĠO (" O "), ĊĠĠĠĠĠĠĠ ĠN (" N ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( grid . size Ġ== Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġgrid . forEach Ġ{ Ġcheck ( it . size Ġ== Ġ 3 ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew Game ( newState : ĠArray < Array < Player >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( newState . size Ġ== Ġ 3 ) ĊĠĠĠĠĠĠĠ ĠnewState . forEach Ġ{ Ġcheck ( it . size Ġ== Ġ 3 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġgrid Ġ= ĠnewState ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprint GameState () Ġ{ ĊĠĠĠĠĠĠĠ Ġgrid . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint ('[ ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Indexed Ġ{ Ġi , Ġp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( p . player ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ!= Ġit . last Index ) Ġ{ Ġprint (',') Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (' ]') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }