object ĠSolve Number Place Ġ{ čĊčĊĠĠĠ Ġ@ Throws ( Exception :: class ) čĊĠĠĠ Ġfun Ġsolve ( number Place : ĠArray < IntArray >): ĠArray < IntArray > Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( number Place . size Ġ!= Ġ 9 Ġ|| Ġnumber Place [ 0 ]. size Ġ!= Ġ 9 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( solve Act ( 0 , Ġ 0 , Ġnumber Place )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Place čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġsolve Act ( x : ĠInt , Ġy : ĠInt , Ġnumber Place : ĠArray < IntArray >): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġnew X : ĠInt čĊĠĠĠĠĠĠĠ Ġvar Ġnew Y : ĠInt čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( x Ġ== Ġ 0 Ġ&& Ġy Ġ== Ġ 9 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( number Place [ y ][ x ] Ġ== Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( t Ġin Ġ 1 .. 9 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Place [ y ][ x ] Ġ= Ġt čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isValid ( x , Ġy , Ġnumber Place )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew X Ġ= Ġx Ġ+ Ġ 1 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Y Ġ= Ġy čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new X Ġ> Ġ 8 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew X Ġ= Ġ 0 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Y ++ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( solve Act ( new X , Ġnew Y , Ġnumber Place )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Place [ y ][ x ] Ġ= Ġ 0 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew X Ġ= Ġx Ġ+ Ġ 1 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Y Ġ= Ġy čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new X Ġ> Ġ 8 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew X Ġ= Ġ 0 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Y ++ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( solve Act ( new X , Ġnew Y , Ġnumber Place )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġfalse čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠisValid ( x : ĠInt , Ġy : ĠInt , Ġnumber Place : ĠArray < IntArray >): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn ĠisValid Row ( x , Ġy , Ġnumber Place ) Ġ&& ĠisValid Height ( x , Ġy , Ġnumber Place ) Ġ&& ĠisValid 3 x 3 ( x , Ġy , Ġnumber Place ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠisValid 3 x 3 ( x : ĠInt , Ġy : ĠInt , Ġnumber Place : ĠArray < IntArray >): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġx Base Ġ= Ġx Ġ/ Ġ 3 Ġ* Ġ 3 čĊĠĠĠĠĠĠĠ Ġval Ġy Base Ġ= Ġy Ġ/ Ġ 3 Ġ* Ġ 3 čĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġy Base Ġuntil Ġy Base Ġ+ Ġ 3 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġx Base Ġuntil Ġx Base Ġ+ Ġ 3 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Ġ!= Ġx Ġ&& Ġi Ġ!= Ġy ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( number Place [ y ][ x ] Ġ== Ġnumber Place [ i ][ j ]) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠisValid Height ( x : ĠInt , Ġy : ĠInt , Ġnumber Place : ĠArray < IntArray >): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 8 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ!= Ġy ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( number Place [ y ][ x ] Ġ== Ġnumber Place [ i ][ x ]) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠisValid Row ( x : ĠInt , Ġy : ĠInt , Ġnumber Place : ĠArray < IntArray >): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 8 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ!= Ġx ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( number Place [ y ][ x ] Ġ== Ġnumber Place [ y ][ i ]) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠ Ġ} č Ċ } čĊ