type alias ĠS udoku CellValue Ġ= ĠSet < Digit > Ċ type alias ĠS udoku Field Ġ= ĠGrid < S udoku CellValue > Ċ type alias ĠSub grid Ġ= ĠList < Cell < S udoku CellValue >> Ċ Ċ private Ġval Ġstart Points Ġ= Ġ( 0 .. 2 ). map Ġ{ Ġy Ġ-> Ġ( 0 .. 2 ). map Ġ{ Ġx Ġ-> ĠPair ( x Ġ* Ġ 3 , Ġy Ġ* Ġ 3 ) Ġ} Ġ}. flatMap Ġ{ Ġit Ġ} Ċ private Ġval Ġvectors Ġ= Ġ( 0 .. 2 ). map Ġ{ Ġy Ġ-> Ġ( 0 .. 2 ). map Ġ{ Ġx Ġ-> ĠPair ( x , Ġy ) Ġ} Ġ}. flatMap Ġ{ Ġit Ġ} Ċ Ċ fun ĠS udoku Field . sub grids (): ĠList < Sub grid > Ġ= Ġstart Points . map Ġ{ Ġ( x , Ġy ) Ġ-> Ġvectors . map Ġ{ Ġ( dx , Ġdy ) Ġ-> Ġget ( x Ġ+ Ġdx , Ġy Ġ+ Ġdy ) Ġ} Ġ} Ċ operator Ġfun ĠList < Sub grid >. get ( x : ĠInt , Ġy : ĠInt ) Ġ= Ġthis [ x Ġ/ Ġ 3 Ġ+ Ġy Ġ/ Ġ 3 Ġ* Ġ 3 ] Ċ