package Ġcom . y xc . s udoku Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġcom . y xc . news by kotlin . Game Map Ċ import Ġcom . y xc . news by kotlin . Step Ċ import Ġcom . z hy . aut ol ayout . Auto Layout Activity Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . util .* Ċ Ċ class ĠMainActivity Ġ: ĠAuto Layout Activity () Ġ{ ĊĠĠĠ Ġval Ġgame : ĠGame Map ĊĠĠĠ Ġval Ġgame Map : ĠArray < Array < Int >> ĊĠĠĠ Ġval Ġsuccess : ĠStringBuilder ĊĠĠĠ Ġval Ġpositions Ġ= ĠArrayList < String >() ĊĠĠĠ Ġval Ġall Views Ġ= ĠArrayList < TextView >() ĊĠĠĠ Ġval Ġempty Views Ġ= ĠArrayList < String >() ĊĠĠĠ Ġval Ġsteps Ġ= ĠLinkedList < Step >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġgame Ġ= ĠGame Map () ĊĠĠĠĠĠĠĠ Ġgame Map Ġ= Ġgame . generate () ĊĠĠĠĠĠĠĠ Ġsuccess Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. game Map . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrow Ġ= Ġgame Map [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 .. row . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositions . add ("$ i $ j ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess . append ( game Map [ i ][ j ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln ("${ success . toString () }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġfocused TextView : ĠTextView ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠRandom () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 3 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġr . nextInt ( positions . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġpositions [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame Map [ index . substring ( 0 , Ġ 1 ). toInt () ][ index . substring ( 1 , Ġ 2 ). toInt ()] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositions . remove ( index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. game Map . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrow Ġ= Ġgame Map [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 .. row . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextView : ĠTextView ? Ġ= Ġlayout _ numbers . find View With Tag ("$ i $ j ") Ġas ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( game Map [ i ][ j ] Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView ?. text Ġ= Ġgame Map [ i ][ j ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView ?. text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty Views . add ( textView ?. tag . toString ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView ?. set BackgroundColor ( resources . getColor ( R . color . white )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Listener ( layout _ numbers ) ĊĠĠĠĠĠĠĠ Ġtv Delete . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( focused TextView == null Ġ|| ĠText Utils . isEmpty ( focused TextView ?. text )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfocused TextView ?. text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag : ĠString Ġ= Ġfocused TextView ?. tag Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrow Ġ= Ġtag . substring ( 0 , Ġ 1 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Ġ= Ġtag . substring ( 1 , Ġ 2 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpre Value Ġ= Ġgame Map [ row ][ col ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame Map [ row ][ col ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsteps . add ( Step ( Pair ( row , Ġcol ), Ġ- 1 , Ġpre Value )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh UI ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtv Move Back . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( steps . size == 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstep Ġ= Ġsteps . last ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( tv Ġin Ġall Views ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tv . tag . toString (). equals ("${ step . position . first }${ step . position . second } ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocused TextView Ġ= Ġtv ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfocused TextView ?. text Ġ= Ġif ( step . value == 0 ) Ġ"" Ġelse Ġstep . value . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame Map [ step . position . first ][ step . position . second ] Ġ= Ġstep . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsteps . remove Last () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh UI ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. layout _ operation . child Count Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġlayout _ operation . getChild At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( focused TextView == null ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocused TextView ?. text Ġ= Ġ( it Ġas ĠTextView ). text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag : ĠString Ġ= Ġfocused TextView ?. tag Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrow Ġ= Ġtag . substring ( 0 , Ġ 1 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Ġ= Ġtag . substring ( 1 , Ġ 2 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpre Value Ġ= Ġgame Map [ row ][ col ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Map [ row ][ col ] Ġ= Ġit . text . toString (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsteps . add ( Step ( Pair ( row , Ġcol ), Ġ 0 , Ġpre Value )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh UI ( it . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Listener ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Ġis ĠViewGroup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. view . child Count Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġview . getChild At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Listener ( child ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( view Ġis ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Views . add ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( empty Views . contains ( it . tag . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocused TextView Ġ= Ġit Ġas ĠTextView ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocused TextView Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh UI (( it Ġas ĠTextView ). text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh UI ( value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( tv Ġin Ġall Views ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tv Ġ== Ġfocused TextView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . setTextColor ( resources . getColor ( R . color . text _ highlight )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . setBackground Resource ( R . drawable . bg _ focus ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Eff ected ( tv )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( focused TextView ?. text . toString ()) Ġ&& Ġtv . text . toString (). equals ( focused TextView ?. text . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . set BackgroundColor ( resources . getColor ( R . color . warning )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . set BackgroundColor ( resources . getColor ( R . color . eff ected )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( empty Views . contains ( tv . tag . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . setTextColor ( resources . getColor ( R . color . text _ editable )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . setTextColor ( resources . getColor ( R . color . text _ light )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( tv . text ) Ġ&& Ġtv . text . toString (). equals ( value )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . setTextColor ( resources . getColor ( R . color . text _ highlight )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . set BackgroundColor ( resources . getColor ( R . color . highlight )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag : ĠString Ġ= Ġtv . tag Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrow Ġ= Ġtag . substring ( 0 , Ġ 1 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Ġ= Ġtag . substring ( 1 , Ġ 2 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( row Ġ< Ġ 3 Ġ&& Ġcol Ġ< Ġ 3 ) Ġ|| Ġ( row Ġ< Ġ 3 Ġ&& Ġcol Ġ> Ġ 5 ) Ġ|| Ġ( row Ġin Ġ 3 .. 5 Ġ&& Ġcol Ġin Ġ 3 .. 5 ) Ġ|| Ġ( row Ġ> Ġ 5 Ġ&& Ġcol Ġ< Ġ 3 ) Ġ|| Ġ( row Ġ> Ġ 5 Ġ&& Ġcol Ġ> Ġ 5 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . set BackgroundColor ( resources . getColor ( R . color . dark )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( empty Views . contains ( tv . tag . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . setTextColor ( resources . getColor ( R . color . text _ editable )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . setTextColor ( resources . getColor ( R . color . text _ light )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . set BackgroundColor ( resources . getColor ( R . color . light )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( empty Views . contains ( tv . tag . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . setTextColor ( resources . getColor ( R . color . text _ editable )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . setTextColor ( resources . getColor ( R . color . text _ dark )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Eff ected ( view : ĠTextView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( focused TextView Ġ== Ġnull ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġtag : ĠString Ġ= Ġview . tag Ġas ĠString ĊĠĠĠĠĠĠĠ Ġval Ġrow Ġ= Ġtag . substring ( 0 , Ġ 1 ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġcol Ġ= Ġtag . substring ( 1 , Ġ 2 ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġfocused Tag : ĠString Ġ= Ġfocused TextView ?. tag Ġas ĠString ĊĠĠĠĠĠĠĠ Ġval Ġfocused Row Ġ= Ġfocused Tag . substring ( 0 , Ġ 1 ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġfocused Col Ġ= Ġfocused Tag . substring ( 1 , Ġ 2 ). toInt () ĊĠĠĠĠĠĠĠ Ġif Ġ( row Ġ== Ġfocused Row Ġ|| Ġcol Ġ== Ġfocused Col Ġ|| Ġget Area Index ( row , Ġcol ) Ġ== Ġget Area Index ( focused Row , Ġfocused Col )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Area Index ( row : ĠInt , Ġcol : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Ġin Ġ 0 .. 2 Ġ&& Ġcol Ġin Ġ 0 .. 2 Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Ġin Ġ 0 .. 2 Ġ&& Ġcol Ġin Ġ 3 .. 5 Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Ġin Ġ 0 .. 2 Ġ&& Ġcol Ġin Ġ 6 .. 8 Ġ-> Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Ġin Ġ 3 .. 5 Ġ&& Ġcol Ġin Ġ 0 .. 2 Ġ-> Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Ġin Ġ 3 .. 5 Ġ&& Ġcol Ġin Ġ 3 .. 5 Ġ-> Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Ġin Ġ 3 .. 5 Ġ&& Ġcol Ġin Ġ 6 .. 8 Ġ-> Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Ġin Ġ 6 .. 8 Ġ&& Ġcol Ġin Ġ 0 .. 2 Ġ-> Ġ 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Ġin Ġ 6 .. 8 Ġ&& Ġcol Ġin Ġ 3 .. 5 Ġ-> Ġ 7 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Ġin Ġ 6 .. 8 Ġ&& Ġcol Ġin Ġ 6 .. 8 Ġ-> Ġ 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġvar Ġis Success Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsum Row Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsum Col Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 .. 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ( game Map [ i ][ j ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum Col Ġ+= Ġgame Map [ j ][ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum Row Ġ+= Ġgame Map [ i ][ j ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sum Row Ġ!= Ġ 4 5 Ġ|| Ġsum Col Ġ!= Ġ 4 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" è¡Į $ i ĠæĪĸ Ġ åĪĹ $ i Ġä¸į åĲĪ æł¼ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Success Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" è¡Į åĪĹ Ġ è¿ĺ ä¸į è¡Į åĵ ¦ , Ġ åĬł æ² ¹ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( area Row Ġin Ġ 0 .. 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( area Col Ġin Ġ 0 .. 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsum Area Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( row Ġin Ġ 0 .. 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( col Ġin Ġ 0 .. 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum Area Ġ+= Ġgame Map [ row Ġ+ Ġarea Row Ġ* Ġ 3 ][ col Ġ+ Ġarea Col Ġ* Ġ 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sum Area Ġ!= Ġ 4 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" åĮºåŁŁ Ġ$ area Row $ area Col Ġä¸į åĲĪ æł¼ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Success Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" åĮºåŁŁ Ġ è¿ĺ ä¸į è¡Į åĵ ¦ , Ġ åĬł æ² ¹ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" éĢļè¿ĩ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( result . toString (). equals ( success . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( success . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( result . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" éĢļè¿ĩ ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( success . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( result . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" è¿ĺ ä¸į è¡Į åĵ ¦ , Ġ åĬł æ² ¹ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ