package Ġcom . github . nom is rev . android arrow playground . domain . t ict act oe Ċ Ċ import Ġarrow . core . Option Ċ import Ġarrow . core . mon ad Ċ import Ġarrow . data . List K Ċ import Ġarrow . data . k Ċ import Ġarrow . syntax . mon ad . flatten Ċ import Ġarrow . syntax . option . to Option Ċ Ċ type alias ĠBoard Ġ= ĠList K < List K < Option < Stone >>> Ċ val ĠBoard . width : ĠInt Ġget () Ġ= Ġsize Ċ val ĠBoard . height : ĠInt Ġget () Ġ= Ġget OrNull ( 0 )?. size Ġ?: Ġ 0 Ċ Ċ operator Ġfun ĠBoard . get ( pos : ĠPos ): ĠOption < Stone > Ġ= Ġget OrNull ( pos . x ). to Option (). flatMap Ġ{ ĊĠĠĠ Ġit . get OrNull ( pos . y ). to Option (). flatten ( Option . mon ad ()) Ċ } Ċ Ċ fun ĠBoard . updated ( pos : ĠPos , Ġstone : ĠOption < Stone >): ĠBoard Ġ= ĊĠĠĠĠĠĠĠ Ġupdated ( pos . x , Ġget ( pos . x ). updated ( pos . y , Ġstone )) Ċ Ċ fun Ġ< A > ĠList K . Companion . fill ( n : ĠInt , Ġa : ĠA ): ĠList K < A > Ġ= Ġ( 0 Ġuntil Ġn ). map Ġ{ Ġa Ġ}. k () Ċ Ċ fun Ġ< A > ĠList K < A >. updated ( i : ĠInt , Ġnew A : ĠA ): ĠList K < A > Ġ= Ġupdate Modify ( i ) Ġ{ Ġ_ Ġ-> Ġnew A Ġ} Ċ Ċ fun Ġ< A > ĠList K < A >. update Modify ( i : ĠInt , Ġf : Ġ( A ) Ġ-> ĠA ): ĠList K < A > Ġ= Ġmap Indexed Ġ{ Ġindex , Ġa Ġ-> Ġif Ġ( index Ġ== Ġi ) Ġf ( a ) Ġelse Ġa Ġ}. k () Ċ