package Ġru . to ham an . rg 2 . fragments ĊĊ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ scr amble _ gen .* Ċ import Ġkotlinx . coroutines .* Ċ import Ġorg . jetbrains . ank o .* Ċ import Ġorg . jetbrains . ank o . sdk 2 7 . coroutines . on Checked Change Ċ import Ġorg . jetbrains . ank o . sdk 2 7 . coroutines . onClick Ċ import Ġorg . jetbrains . ank o . support . v 4 . alert Ċ import Ġorg . jetbrains . ank o . support . v 4 . ctx Ċ import Ġorg . jetbrains . ank o . support . v 4 . startActivity Ċ import Ġru . to ham an . rg 2 .* Ċ import Ġru . to ham an . rg 2 . Debug Tag . TAG Ċ import Ġru . to ham an . rg 2 . activities . Timer Activity Ċ import Ġru . to ham an . rg 2 . adapters . My Grid Adapter Ċ import Ġru . to ham an . rg 2 . data . List Pager Lab Ċ import Ġru . to ham an . rg 2 . util .* Ċ import Ġjava . util .* Ċ import Ġkotlin . coroutines . Coroutine Context Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġan ton Ġon Ġ 2 7 . 1 1 . 1 7 . ĠÐ ¤ ÑĢÐ°Ð ³ Ð¼ ÐµÐ½ÑĤ ĠÐ¾ÑĤ Ð¾Ð±ÑĢÐ°Ð¶ Ð°Ñİ ÑīÐ¸Ð¹ ĠÐ³ ÐµÐ½ ÐµÑĢ Ð°ÑĤÐ¾ÑĢ ĠÑģÐº ÑĢÐ°Ð¼ Ð± Ð» Ð¾Ð² Ċ Ġ* Ċ Ġ*/ Ċ Ċ class ĠFragment Scr amble Gen Ġ: ĠFragment (), ĠCor outine Scope Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Listener : ĠOn Scr amble Gen Interaction Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgrid Adapter Ġ: ĠMy Grid Adapter ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠprogressBar Ġ: ĠProgress Bar ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprogress Text Ġ: ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgenerate Scr amble Ġ: ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠcheckBox Edges Ġ: ĠCheckBox ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠcheckBox C orners Ġ: ĠCheckBox ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠcheckBox Show Solve Ġ: ĠCheckBox ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtext Scr amble Len : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtext Scr amble : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtext Solve : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbutton Plus : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbutton Minus : ĠButton ĊĊĠĠĠ Ġ// ĠÐº Ð¾ÑĢ Ñĥ ÑĤÐ¸ Ð½Ð° ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ±ÑĭÑĤÑĮ ĠÐ» ÐµÐ³ ÐºÐ¾ ĠÐ¾ Ð³ÑĢ Ð°Ð½Ð¸ Ñĩ ÐµÐ½Ð° ĠÐ¶ Ð¸Ð· Ð½ ÐµÐ½ Ð½ÑĭÐ¼ ĠÑĨ Ð¸Ðº Ð» Ð¾Ð¼ ĠFragment ĊĠĠĠ Ġprivate Ġval Ġscope Ġ= ĠCor outine Scope ( Dispatch ers . Main ) ĊĊĠĠĠ Ġprivate Ġval Ġjob Ġ= ĠSuper visor Job () ĊĊĠĠĠ Ġoverride Ġval Ġcoroutine Context Ġ= ĠDispatch ers . Main Ġ+ Ġjob ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġcoroutine Context . cancel Children () ĊĠĠĠ Ġ} ĊĊ Ċ // ĠĠĠ Ġprivate Ġvar Ġlist Edges On Place : ĠSorted Map < Int , Int > Ġ= Ġsorted Map Of ( 0 Ġto Ġ 0 ) Ċ // ĠĠĠ Ġprivate Ġvar Ġlist C orners On Place : ĠSorted Map < Int , Int > Ġ= Ġsorted Map Of ( 0 Ġto Ġ 0 ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v Ġ( TAG , Ġ" Fragment Scr amble Gen ĠonCreate View Ġ- Ġstart ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsp Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġactivity ?. intent ?. data ĊĠĠĠĠĠĠĠ Ġvar Ġscr amble Ġ= Ġsp . getString ( SCR AM BLE , Ġ" U 2 ĠF 2 ĠL \' ĠD 2 ĠR ĠU ĠF \' ĠL 2 ĠB 2 ĠR ĠL 2 ĠB 2 ĠU ĠR ") !! ĊĠĠĠĠĠĠĠ Ġ// ĠÐķÑģÐ»Ð¸ ĠÐ²Ñĭ Ð· Ð² Ð°Ð½ ĠÑģ ĠÐ¿Ð°ÑĢÐ°Ð¼ÐµÑĤ ÑĢ Ð¾Ð¼ , ĠÑĤÐ¾ ĠÑģÐº ÑĢÐ°Ð¼ Ð± Ð» ĠÐ² Ð· Ñı ÑĤÑĮ ĠÐ¸Ð· ĠÐ¿Ð°ÑĢÐ°Ð¼ÐµÑĤ ÑĢÐ° , ĠÐ° ĠÐ½Ðµ ĠÐ¸Ð· ĠÐ± Ð°Ð· Ñĭ ĊĠĠĠĠĠĠĠ Ġif Ġ( uri Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscr amble Ġ= Ġuri . getQuery Parameter (" sc ram ") !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscr amble Ġ= Ġscr amble . replace ("_ ", Ġ" Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġchk Edges Buffer Ġ= Ġsp . getBoolean ( CH K _ BUF _ ED GES , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġvar Ġchk C orners Buffer Ġ= Ġsp . getBoolean ( CH K _ BUF _ COR N ERS , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġvar Ġscr amble Length Ġ= Ġsp . getInt ( SCR AM BLE _ LEN , Ġ 1 4 ) ĊĠĠĠĠĠĠĠ Ġvar Ġchk Show Solve Ġ= Ġsp . getBoolean ( CH K _ SHOW _ SOL VE , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ scr amble _ gen , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠLog . v Ġ( TAG , Ġ" Fragment Scr amble Gen ĠonCreate View Ġ- Ġhide ĠProgress Bar Ġ& ĠProgress Text ") ĊĠĠĠĠĠĠĠ ĠprogressBar Ġ= Ġview !!. findViewById ( R . id . progress Bar ) ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġprogress Text Ġ= Ġview . findViewById ( R . id . progress Text ) ĊĠĠĠĠĠĠĠ Ġprogress Text . backgroundColor Resource Ġ= ĠR . color . gray ĊĠĠĠĠĠĠĠ Ġprogress Text . text Size Ġ= Ġ 1 2 f ĊĠĠĠĠĠĠĠ Ġprogress Text . visibility Ġ= ĠView . IN VISIBLE ĊĊĠĠĠĠĠĠĠ Ġ// ĠÐļ Ð½ Ð¾Ð¿ ÐºÐ° ĠÐ²Ñĭ Ð· Ð¾Ð² Ð° ĠÑĢ ÐµÐ´ Ð°Ðº ÑĤÐ¸ ÑĢÐ¾Ð² Ð°Ð½Ð¸Ñı ĠÐ° Ð· Ð± Ñĥ ÐºÐ¸ ĊĠĠĠĠĠĠĠ Ġval Ġaz bu ka Button Ġ= Ġview . findViewById < Button >( R . id . button _ az bu ka ) ĊĠĠĠĠĠĠĠ Ġaz bu ka Button . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v Ġ( TAG , Ġ" Az bu ka Button ĠClick ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener !!. on Scr amble Gen Interaction (" AZ BU KA ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠÐ ĵ Ð» Ð°Ð² Ð½Ð°Ñı ĠÐº Ð½ Ð¾Ð¿ ÐºÐ° Ġ- ĠÐ ĵ ÐµÐ½ ÐµÑĢ Ð°ÑĨÐ¸Ñı ĠÑģÐº ÑĢÐ°Ð¼ Ð± Ð»Ð° ĊĠĠĠĠĠĠĠ Ġgenerate Scr amble Ġ= Ġview . findViewById ( R . id . button _ generate ) ĊĠĠĠĠĠĠĠ Ġgenerate Scr amble . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v Ġ( TAG , Ġ" Generate Scr amble Button ĠClick ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscr amble Generate ( chk Edges Buffer , Ġchk C orners Buffer , Ġscr amble Length ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠÐ § ÐµÐº Ð± Ð¾Ðº Ñģ ĠÐ¿ÐµÑĢ ÐµÐ¿ Ð» Ð°Ð² ÐºÐ¸ ĠÐ³ ÑĢÐ°Ð½ ÐµÐ¹ ĊĠĠĠĠĠĠĠ ĠcheckBox Edges Ġ= Ġview . findViewById ( R . id . checkBox _ edges ) ĊĠĠĠĠĠĠĠ ĠcheckBox Edges . isChecked Ġ= Ġchk Edges Buffer ĊĠĠĠĠĠĠĠ ĠcheckBox Edges . on Checked Change Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v Ġ( TAG , Ġ" CheckBox Edges Ġchanged ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchk Edges Buffer Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Boolean 2 SP ( chk Edges Buffer , CH K _ BUF _ ED GES , button View !!. context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠÐ § ÐµÐº Ð± Ð¾Ðº Ñģ ĠÐ¿ÐµÑĢ ÐµÐ¿ Ð» Ð°Ð² ÐºÐ¸ ĠÑĥ Ð³ Ð» Ð¾Ð² ĊĠĠĠĠĠĠĠ ĠcheckBox C orners Ġ= Ġview . findViewById ( R . id . checkBox _ corners ) ĊĠĠĠĠĠĠĠ ĠcheckBox C orners . isChecked Ġ= Ġchk C orners Buffer ĊĠĠĠĠĠĠĠ ĠcheckBox C orners . on Checked Change Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v Ġ( TAG , Ġ" CheckBox C orners Ġchanged ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchk C orners Buffer Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Boolean 2 SP ( chk C orners Buffer , CH K _ BUF _ COR N ERS , button View !!. context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠÐĶ Ð»Ð¸ Ð½Ð° ĠÑģÐº ÑĢÐ°Ð¼ Ð± Ð»Ð° Ġ( ÑĤ ÐµÐº ÑģÑĤ Ð¾Ð² Ð¾Ðµ ĠÐ¿Ð¾Ð» Ðµ ) ĊĠĠĠĠĠĠĠ Ġtext Scr amble Len Ġ= Ġ Ġview . findViewById ( R . id . scr amble Length ) ĊĠĠĠĠĠĠĠ Ġtext Scr amble Len . text Ġ= Ġscr amble Length . toString () ĊĊĠĠĠĠĠĠĠ Ġ// ĠÐļ Ð½ Ð¾Ð¿ ÐºÐ° Ġ+ ĊĠĠĠĠĠĠĠ Ġbutton Plus Ġ= Ġview . findViewById ( R . id . button _ plus ) ĊĠĠĠĠĠĠĠ Ġbutton Plus . onClick Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscr amble Length ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( scr amble Length Ġ> Ġ 3 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscr amble Length Ġ= Ġ 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Scr amble Len . text Ġ= Ġscr amble Length . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Int 2 SP ( scr amble Length , ĠS CR AM BLE _ LEN , Ġv !!. context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠÐļ Ð½ Ð¾Ð¿ ÐºÐ° Ġ- ĊĠĠĠĠĠĠĠ Ġbutton Minus Ġ= Ġview . findViewById ( R . id . button _ minus ) ĊĠĠĠĠĠĠĠ Ġbutton Minus . onClick Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscr amble Length -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( scr amble Length Ġ< Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscr amble Length Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Scr amble Len . text Ġ= Ġscr amble Length . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Int 2 SP ( scr amble Length , ĠS CR AM BLE _ LEN , Ġv !!. context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ð¢ ÐµÐº ÑģÑĤ ĠÑģ Ð°Ð¼ Ð¾Ð³Ð¾ ĠÑģÐº ÑĢÐ°Ð¼ Ð± Ð»Ð° ĊĠĠĠĠĠĠĠ Ġtext Scr amble Ġ= Ġview . findViewById ( R . id . scr amble ) ĊĠĠĠĠĠĠĠ Ġtext Scr amble . text Ġ= Ġscr amble ĊĠĠĠĠĠĠĠ Ġtext Scr amble . onClick Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v Ġ( TAG , Ġ" Custom Scr amble Se Ġselect ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom View Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Scr amble Ġ= Ġedit Text Ġ( text Scr amble . text ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint Ġ= Ġ" Ð² Ð²ÐµÐ´ Ð¸ÑĤÐµ ĠÑģÐ² Ð¾Ð¹ ĠÑģÐº ÑĢÐ°Ð¼ Ð± Ð» " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button (" OK ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscr amble String Ġ= Ġset Scr amble . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Scr amble . text Ġ= Ġscr amble String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave String 2 SP ( scr amble String , SCR AM BLE , Ġv !!. context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcube Ġ= Ġrun Scr amble ( reset Cube (), Ġscr amble String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Cube ( cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Solve . text Ġ= Ġshow Solve ( cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button (" Ðŀ ÑĤ Ð¼ÐµÐ½ Ð° ") Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtimer Button Ġ= Ġview . find < Button > Ġ( R . id . timer Button ) ĊĠĠĠĠĠĠĠ Ġtimer Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v Ġ( TAG , Ġ" Timer Button ĠClick ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity < Timer Activity >() ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠÐ § ÐµÐº Ð± Ð¾Ðº Ñģ ĠÐ¾ÑĤ Ð¾Ð±ÑĢÐ°Ð¶ Ð°ÑĤÑĮ ĠÐ¸Ð»Ð¸ ĠÐ½ ÐµÑĤ ĠÑĢ ÐµÑĪ ÐµÐ½Ð¸Ðµ ĠÑģÐº ÑĢÐ°Ð¼ Ð± Ð»Ð° ĊĠĠĠĠĠĠĠ ĠcheckBox Show Solve Ġ= Ġview . find ( R . id . checkBox _ solve ) ĊĠĠĠĠĠĠĠ ĠcheckBox Show Solve . isChecked Ġ= Ġchk Show Solve ĊĠĠĠĠĠĠĠ ĠcheckBox Show Solve . on Checked Change Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v Ġ( TAG , Ġ" CheckBox Show Solve Ġchanged ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchk Show Solve Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcube Ġ= Ġrun Scr amble ( reset Cube (), Ġtext Scr amble . text Ġas ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Solve . text Ġ= Ġshow Solve ( cube ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Boolean 2 SP ( chk Show Solve , ĠCH K _ SHOW _ SOL VE , Ġbutton View !!. context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Cube Ġ= Ġrun Scr amble ( reset Cube (), Ġscr amble ) ĊĠĠĠĠĠĠĠ Ġ// Ð¢ ÐµÐº ÑģÑĤ ĠÑģ ĠÑĢ ÐµÑĪ ÐµÐ½Ð¸ ÐµÐ¼ ĠÑģÐº ÑĢÐ°Ð¼ Ð± Ð»Ð° ĊĠĠĠĠĠĠĠ Ġtext Solve Ġ= Ġview . findViewById ( R . id . solve _ text ) ĊĠĠĠĠĠĠĠ Ġtext Solve . text Ġ= Ġshow Solve ( current Cube ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgrid List Ġ= Ġprepare Cube To Show In GridView ( current Cube ) ĠĠĠĠĠĠĠ Ġ// Ð¿ Ð¾Ð´ Ð³ Ð¾ÑĤ Ð°Ð² Ð»Ð¸ Ð² Ð°ÐµÐ¼ ĠÑĤÐµÐº Ñĥ ÑīÐ¸Ð¹ ĠÐº ÑĥÐ± Ð¸Ðº ĠÐ´Ð»Ñı ĠÐ²Ñĭ Ð² Ð¾Ð´Ð° ĠÐ² ĠGrid View ĊĊĠĠĠĠĠĠĠ Ġ// Ð½Ð° ÑħÐ¾Ð´ Ð¸Ð¼ ĠGrid View ĠÐ¸ ĠÐ²Ñĭ Ð²Ð¾Ð´ Ð¸Ð¼ ĠÐ² ĠÐ½ ÐµÐ³Ð¾ ĠÑĤÐµÐº Ñĥ ÑīÐ¸Ð¹ ĠÐº ÑĥÐ± Ð¸Ðº ĊĠĠĠĠĠĠĠ Ġval Ġgrid View Ġ= Ġview . find < GridView >( R . id . sc ram _ grid View ) ĊĠĠĠĠĠĠĠ Ġgrid Adapter Ġ= ĠMy Grid Adapter ( view . context , Ġgrid List ) ĊĠĠĠĠĠĠĠ Ġgrid View . adapter Ġ= Ġgrid Adapter ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Solve ( cube : ĠInt Array ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġst Ġ= Ġget Solve ( cube , Ġrequire Context ()). first ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( checkBox Show Solve . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġst ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġst . split (" Ġ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array (). size . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Cube ( cube : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v Ġ( TAG , Ġ" Fragment Scr amble Gen Ġshow Cube ") ĊĠĠĠĠĠĠĠ Ġgrid Adapter . grid List Ġ= Ġprepare Cube To Show In GridView ( cube ) ĊĠĠĠĠĠĠĠ Ġgrid Adapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġscr amble Generate ( chk Edges Buffer : ĠBoolean , Ġchk C orners Buffer : ĠBoolean , Ġscr amble Length : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" Fragment Scr amble Gen Ġscr amble Generate ") ĊĠĠĠĠĠĠĠ Ġ// ĠÐ´ ÐµÐ» Ð°ÐµÐ¼ ĠÐº Ð½ Ð¾Ð¿ ÐºÑĥ Ġ" Ðĵ ÐµÐ½ ÐµÑĢ ÐµÑĢ Ð¸ÑĢÐ¾Ð² Ð°ÑĤÑĮ " ĠÐ½Ðµ ĠÐ° Ðº ÑĤ Ð¸Ð² Ð½Ð¾Ð¹ , ĠÐ¿ÑĢ Ð¾Ð³ ÑĢÐµÑģ Ð± Ð°ÑĢ ĠÐ° Ðº ÑĤ Ð¸Ð² Ð½ÑĭÐ¼ ĠÐ¸ ĠÑĥ Ð± Ð¸ ÑĢÐ° ÐµÐ¼ ĠÑĢ ÐµÑĪ ÐµÐ½Ð¸Ðµ ĠÑģÐº ÑĢÐ°Ð¼ Ð± Ð»Ð° ĊĠĠĠĠĠĠĠ Ġbutton _ generate . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġprogress Text . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġtext Solve . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ// Ð· Ð°Ð¿ ÑĥÑģ ÐºÐ° ÐµÐ¼ ĠÐ² ĠÐ± Ñį Ðº Ð³ ÑĢÐ° ÑĥÐ½ Ð´Ðµ ĠÐ¿Ð¾ Ð¸Ñģ Ðº ĠÑģÐº ÑĢÐ°Ð¼ Ð± Ð»Ð° ĠÑĥ Ð´ Ð¾Ð² Ð» ÐµÑĤ Ð² Ð¾ÑĢ Ñı Ñİ Ñī ÐµÐ³Ð¾ ĠÑĥ ÑģÐ» Ð¾Ð² Ð¸Ñı Ð¼ ĊĠĠĠĠĠĠĠ Ġscope . launch Ġ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscr amble Ġ= Ġgenerate Scr amble With Param ( chk Edges Buffer , Ġchk C orners Buffer , Ġscr amble Length , Ġrequire Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Scr amble Gen Result Ġ( scr amble ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Scr amble Gen Result ( gen Res : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" Fragment Scr amble Gen Ġshow Scr amble Gen Result Ġ$ gen Res ") ĊĠĠĠĠĠĠĠ Ġbutton _ generate . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġprogress Text . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġtext Scr amble . text Ġ= Ġgen Res ĊĠĠĠĠĠĠĠ Ġsave String 2 SP ( gen Res , ĠS CR AM BLE , Ġrequire Context ()) ĊĠĠĠĠĠĠĠ Ġval Ġcube Ġ= Ġrun Scr amble ( reset Cube (), Ġgen Res ) ĊĠĠĠĠĠĠĠ Ġshow Cube ( cube ) ĊĠĠĠĠĠĠĠ Ġtext Solve . text Ġ= Ġshow Solve ( cube ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v Ġ( Debug Tag . TAG , Ġ" Fragment Scr amble Gen Ġon Attach ") ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġis ĠFragment Scr amble Gen . On Scr amble Gen Interaction Listener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( context !!. toString () Ġ+ Ġ" Ġmust Ġimplement ĠOn Scr amble Gen Interaction Listener ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v Ġ( Debug Tag . TAG , Ġ" Fragment Scr amble Gen Ġon Detach ") ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠĠĠĠĠ Ġm Listener Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Scr amble Gen Interaction Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Scr amble Gen Interaction ( button : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( Debug Tag . TAG , Ġ" Fragment Scr amble Gen Ġon ListView Interaction ") ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠFragment Scr amble Gen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( Debug Tag . TAG , Ġ" Fragment Scr amble Gen Ġnew Instance ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFragment Scr amble Gen () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġgenerate Scr amble With Param ( check Edge : ĠBoolean , Ġcheck Corner : ĠBoolean , Ġlen Scr amble : ĠInt , Ġcontext : ĠContext ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" Ðĺ Ñī ÐµÐ¼ ĠÑģÐº ÑĢÐ°Ð¼ Ð± Ð» ĠÐ¿Ð¾Ð´ ÑħÐ¾Ð´ Ñı ÑīÐ¸Ð¹ ĠÐ¿Ð¾ ĠÐ¿Ð°ÑĢÐ°Ð¼ÐµÑĤ ÑĢÐ°Ð¼ ĠÐ¿ÐµÑĢ ÐµÐ¿ Ð» Ð°Ð² Ð¾Ðº ĠÐ± Ñĥ ÑĦ ÐµÑĢÐ° ĠÐ¸ ĠÐ´ Ð»Ð¸ Ð½Ðµ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġscr amble : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ñģ Ð³ ÐµÐ½ ÐµÑĢ Ð¸ ÑĢÑĥ ÐµÐ¼ ĠÑģÐº ÑĢÐ°Ð¼ Ð± Ð» ĠÐ´ Ð»Ð¸ Ð½ Ð½Ñĭ ĠÑĥÐºÐ°Ð· Ð°Ð½ Ð½Ð¾Ð¹ ĠÐ² ĠÐ¿Ð¾Ð» Ðµ ĠScr amble Length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscr amble Ġ= Ġgenerate Scr amble ( len Scr amble ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// scr amble Ġ= Ġ" B 2 ĠD ' ĠB 2 ĠR ĠU ' ĠD 2 ĠF ĠB 2 ĠU ' ĠR 2 ĠB ' ĠD 2 ĠF 2 ĠR '" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ÑĢÐ°Ð· Ð± Ð¸ ÑĢÐ° ÐµÐ¼ ĠÐº ÑĥÐ± Ð¸Ðº ĠÐ¿Ð¾ ĠÑģÐº ÑĢÐ°Ð¼ Ð± Ð» Ñĥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Scr amble Cube Ġ= Ġrun Scr amble ( reset Cube (), Ġscr amble ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÐ¿Ð¾Ð»ÑĥÑĩ Ð°ÐµÐ¼ ĠÑĢ ÐµÑĪ ÐµÐ½Ð¸Ðµ ĠÐº ÑĥÐ± Ð¸ ÐºÐ° Ġ( solve , is Edge Mel ted , is Corner Mel ted ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtriple Ġ= Ġget Solve ( gen Scr amble Cube , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Edge Mel ted Ġ= Ġtriple . second ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Corner Mel ted Ġ= Ġtriple . third ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" ÐŁ ÑĢÐ¾Ð² ÐµÑĢ ÐºÐ° ĠScr amble Ġ$ scr amble , ĠÐŁ ÐµÑĢ ÐµÐ¿ Ð» Ð°Ð² ÐºÐ° ĠÐ± Ñĥ ÑĦ ÐµÑĢÐ° ĠÑĢ ÐµÐ± ÐµÑĢ Ġ- Ġ${ triple . second } Ġ, ĠÐŁ ÐµÑĢ ÐµÐ¿ Ð» Ð°Ð² ÐºÐ° ĠÐ± Ñĥ ÑĦ ÐµÑĢÐ° ĠÑĥ Ð³ Ð» Ð¾Ð² Ġ- Ġ${ triple . third }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Edge Mel ted Ġ&& Ġcheck Edge ) Ġ{ Ġresult Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Corner Mel ted Ġ&& Ġcheck Corner ) Ġ{ Ġresult Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ(! result ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" Ð¢ Ð°Ðº Ð¸ ĠÑģÐº ÑĢÐ°Ð¼ Ð± Ð» Ġ$ scr amble ĠÐ¿Ð¾Ð´ Ð¾ ÑĪ ÐµÐ» ĠÐ¿Ð¾Ð´ ĠÐ½Ð° ÑĪÐ¸ ĠÑĥ ÑģÐ» Ð¾Ð² Ð¸Ñı ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġscr amble ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ÐĴ Ð¾Ð· Ð²ÑĢÐ°Ñī Ð°ÐµÐ¼ ĠÑĢ ÐµÑĪ ÐµÐ½Ð¸Ðµ , ĠÐ±Ñĭ Ð»Ð° ĠÐ» Ð¸ ĠÐ¿ÐµÑĢ ÐµÐ¿ Ð» Ð°Ð² ÐºÐ° ĠÐ± Ñĥ ÑĦ . ÑĢ ÐµÐ± ÐµÑĢ , ĠÐ±Ñĭ Ð»Ð° ĠÐ» Ð¸ ĠÐ¿ÐµÑĢ ÐµÐ¿ Ð» Ð°Ð² ÐºÐ° ĠÐ± Ñĥ ÑĦ . Ñĥ Ð³ Ð» Ð¾Ð² ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Solve ( main Cube : ĠInt Array , Ġcontext : ĠContext ): Ġ ĠTrip le < String , ĠBoolean , ĠBoolean > Ġ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsolve Ġ= Ġ"(" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcube Ġ= Ġmain Cube . clone () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Edge Mel ted Ġ= Ġfalse ĠĠĠĠĠĠĠ Ġ// Ð¸Ð· Ð½Ð°Ñĩ Ð°Ð»ÑĮ Ð½Ð¾ ĠÑģ Ñĩ Ð¸ÑĤ Ð°ÐµÐ¼ , ĠÑĩÑĤÐ¾ ĠÐ¿ÐµÑĢ ÐµÐ¿ Ð» Ð°Ð² Ð¾Ðº ĠÐ½Ðµ ĠÐ±Ñĭ Ð»Ð¾ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Corner Mel ted Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ÑĢ ÐµÑĪ Ð°ÐµÐ¼ ĠÑĢ ÐµÐ± ÑĢÐ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ñģ Ð½Ð°Ñĩ Ð°Ð»Ð° ĠÑĢ ÐµÐ± ÑĢÐ° : ĠÑģÐ¼ Ð¾ÑĤ ÑĢ Ð¸Ð¼ ĠÑĩÑĤÐ¾ ĠÐ² ĠÐ± Ñĥ ÑĦ ÐµÑĢ Ðµ ĠÑĢ ÐµÐ± ÐµÑĢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsum Color Ġ= Ġget Color Of Element ( cube , Ġ 2 3 , Ġ 3 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ÐµÑģ Ð»Ð¸ ĠÑĤ Ð°Ð¼ ĠÐ± Ñĥ ÑĦ ÐµÑĢ Ð½ÑĭÐ¹ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ ĠÐ± ÐµÐ» Ð¾ - Ðº ÑĢ Ð°Ñģ Ð½ÑĭÐ¹ ĠÐ¸Ð»Ð¸ ĠÐº ÑĢ Ð°Ñģ Ð½Ð¾ - Ð± ÐµÐ» ÑĭÐ¹ , ĠÑĤÐ¾ ĠÑģÑĤ Ð°Ð² Ð¸Ð¼ ĠÐ¿ÑĢ Ð¸Ð· Ð½ Ð°Ðº ĠÐ¿ÐµÑĢ ÐµÐ¿ Ð» Ð°Ð² ÐºÐ¸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( sum Color Ġ== Ġ 4 3 ) Ġor Ġ( sum Color Ġ== Ġ 3 4 )) Ġ{ Ġis Edge Mel ted Ġ= Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÑģÑĤ Ð°Ð² Ð¸Ð¼ ĠÐ½Ð° ĠÐ¼ ÐµÑģÑĤ Ð¾ ĠÑĢ ÐµÐ± ÑĢÐ¾ ĠÐ¸Ð· ĠÐ± Ñĥ ÑĦ ÐµÑĢÐ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsc Ġ= Ġedge Buffer Solve ( cube , Ġmain Edge [ sum Color ] !! , Ġsolve , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÑģÐ¾ Ñħ ÑĢÐ°Ð½ Ñı ÐµÐ¼ ĠÑĢ ÐµÐ· ÑĥÐ»ÑĮ ÑĤ Ð°ÑĤ Ñĭ ĠÐ²ÑĭÐ¿Ð¾Ð»Ð½ ÐµÐ½Ð¸Ñı ĠÐ¾Ð´ Ð½Ð¾Ð¹ Ġ" Ð± Ñĥ Ðº Ð² Ñĭ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsolve Ġ= Ġsc . solve ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcube Ġ= Ġsc . cube ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÐ²ÑĭÐ¿Ð¾Ð»Ð½ Ñı ÐµÐ¼ ĠÐ¿Ð¾Ðº Ð° ĠÐ²ÑģÐµ ĠÑĢ ÐµÐ± ÑĢÐ° ĠÐ½Ðµ ĠÐ±ÑĥÐ´ ÑĥÑĤ ĠÐ½Ð° ĠÑģÐ² Ð¾ Ð¸Ñħ ĠÐ¼ ÐµÑģÑĤ Ð°Ñħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ(! is All Edges On Its Place ( cube ). all Complete ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsolve Ġ= Ġsolve . trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsolve Ġ+= Ġ") Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÐŁ ÑĢÐ¾Ð² ÐµÑĢ Ñı ÐµÐ¼ ĠÐ½ ÑĥÐ¶ ÐµÐ½ ĠÐ» Ð¸ ĠÑįÐº Ð² Ð°ÑĤÐ¾ÑĢ , ĠÐ¸ ĠÐ²ÑĭÐ¿Ð¾Ð»Ð½ Ñı ÐµÐ¼ ĠÐµÐ³Ð¾ ĠÐµÑģÐ»Ð¸ ĠÐ½ Ð°Ð´ Ð¾ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj Ġ= Ġsolve . split (" Ġ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array (). size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Ġ% Ġ 2 Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsolve Ġ+= Ġ" ÐŃ Ðº Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcube Ġ= Ġe kv ator ( cube ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ÑĢ ÐµÑĪ Ð°ÐµÐ¼ ĠÑĥ Ð³ Ð» Ñĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsolve Ġ+= Ġ"(" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ñģ Ð½Ð°Ñĩ Ð°Ð»Ð° ĠÑĢ ÐµÐ± ÑĢÐ° : ĠÑģÐ¼ Ð¾ÑĤ ÑĢ Ð¸Ð¼ ĠÑĩÑĤÐ¾ ĠÐ² ĠÐ± Ñĥ ÑĦ ÐµÑĢ Ðµ ĠÑĥ Ð³ Ð» Ð¾Ð² ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsum Color Ġ= Ġget Color Of Element ( cube , 1 8 , 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ÐµÑģ Ð»Ð¸ ĠÑĤ Ð°Ð¼ ĠÐ± Ñĥ ÑĦ ÐµÑĢ Ð½ÑĭÐ¹ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ , ĠÑĤÐ¾ ĠÑģÑĤ Ð°Ð² Ð¸Ð¼ ĠÐ¿ÑĢ Ð¸Ð· Ð½ Ð°Ðº ĠÐ¿ÐµÑĢ ÐµÐ¿ Ð» Ð°Ð² ÐºÐ¸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 1 3 Ġ= ĠÑģ Ð¸Ð½ Ðµ - Ð± ÐµÐ» ÑĭÐ¹ , Ġ 3 2 Ġ= ĠÐ± ÐµÐ» Ð¾ - Ð¾ÑĢ Ð°Ð½ Ð¶ ÐµÐ² ÑĭÐ¹ , Ġ 2 1 Ġ= ĠÐ¾ ÑĢÐ°Ð½ Ð¶ ÐµÐ² Ð¾ - Ñģ Ð¸Ð½ Ð¸Ð¹ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( sum Color Ġ== Ġ 1 3 ) Ġor Ġ( sum Color Ġ== Ġ 3 2 ) Ġor Ġ( sum Color Ġ== Ġ 2 1 )) Ġ{ Ġis Corner Mel ted Ġ= Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÑģÑĤ Ð°Ð² Ð¸Ð¼ ĠÐ½Ð° ĠÐ¼ ÐµÑģÑĤ Ð¾ ĠÑĥ Ð³ Ð¾Ð» ĠÐ¸Ð· ĠÐ± Ñĥ ÑĦ ÐµÑĢÐ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsc Ġ= Ġcorner Buffer Solve ( cube , Ġ Ġmain Corner [ sum Color ] !! , Ġsolve , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÑģÐ¾ Ñħ ÑĢÐ°Ð½ Ñı ÐµÐ¼ ĠÑĢ ÐµÐ· ÑĥÐ»ÑĮ ÑĤ Ð°ÑĤ Ñĭ ĠÐ²ÑĭÐ¿Ð¾Ð»Ð½ ÐµÐ½Ð¸Ñı ĠÐ¾Ð´ Ð½Ð¾Ð¹ Ġ" Ð± Ñĥ Ðº Ð² Ñĭ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsolve Ġ= Ġsc . solve ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcube Ġ= Ġsc . cube ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÐ²ÑĭÐ¿Ð¾Ð»Ð½ Ñı ÐµÐ¼ ĠÐ¿Ð¾Ðº Ð° ĠÐ²ÑģÐµ ĠÑĥ Ð³ Ð» Ñĭ ĠÐ½Ðµ ĠÐ±ÑĥÐ´ ÑĥÑĤ ĠÐ½Ð° ĠÑģÐ² Ð¾ Ð¸Ñħ ĠÐ¼ ÐµÑģÑĤ Ð°Ñħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ(! is All C orners On Its Place ( cube ). all Complete ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsolve Ġ= Ġsolve . trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsolve Ġ+= Ġ")" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTrip le ( solve , Ġis Edge Mel ted , Ġis Corner Mel ted ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠÐ£ ÑģÑĤÐ°Ð½Ð¾Ð² ÐºÐ° ĠÐ½Ð° ĠÑģÐ² Ð¾Ðµ ĠÐ¼ ÐµÑģÑĤ Ð¾ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ð° ĠÑĨ Ð²ÐµÑĤ Ð° Ġelement Position ĠÐ½Ð° ÑħÐ¾Ð´ Ñı Ñī ÐµÐ³Ð¾ ÑģÑı ĠÐ² ĠÐ± Ñĥ ÑĦ ÐµÑĢ Ðµ ĠÑĢ ÐµÐ± ÐµÑĢ ĊĠĠĠĠĠĠĠ Ġ// ĠÐĴ Ð¾Ð· Ð²ÑĢÐ°Ñī Ð°ÐµÑĤ ĠSolve Cube Ġ= ĠÐº ÑĥÐ± ĠÐ¿Ð¾ÑģÐ» Ðµ ĠÐ²ÑĭÐ¿Ð¾Ð»Ð½ ÐµÐ½Ð¸Ñı ĠÑĥÑģÑĤÐ°Ð½Ð¾Ð² ÐºÐ¸ ĠÐ¸ ĠÑĢ ÐµÑĪ ÐµÐ½Ð¸Ðµ Ġsolve Ġ+ ĠÑĤÐµÐº Ñĥ ÑīÐ¸Ð¹ Ġ ÑħÐ¾Ð´ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġedge Buffer Solve ( cube : ĠInt Array , Ġelement Position : ĠInt , Ġsolve : ĠString , Ġcontext : ĠContext ): ĠSolve Cube Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtmp Cube Ġ= Ġcube ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġposition Of Elem Ġ= Ġelement Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsol v Ġ= Ġsolve ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Pager Lab Ġ= ĠList Pager Lab . get ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaz bu ka Ġ= Ġlist Pager Lab . getCurrent Az bu ka () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! (( position Of Elem Ġ== Ġ 2 3 ) Ġor Ġ( position Of Elem Ġ== Ġ 3 0 ))) Ġ{ ĠĠĠĠĠĠĠĠĠĠ Ġ// Ð¿ ÑĢÐ¾Ð² ÐµÑĢ Ñı ÐµÐ¼ , ĠÐ½Ðµ ĠÐ± Ñĥ ÑĦ ÐµÑĢ ĠÐ» Ð¸ ?, ĠÐµÑģÐ»Ð¸ ĠÐ½ ÐµÑĤ , ĠÑĤÐ¾ ĠÐ´ Ð¾Ð± Ð¾ Ð°Ð² Ð»Ñı ÐµÐ¼ ĠÐ± Ñĥ Ðº Ð² Ñĥ ĠÐº ĠÑĢ ÐµÑĪ ÐµÐ½Ð¸ Ñİ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsol v Ġ+= Ġaz bu ka [ position Of Elem ] Ġ+ Ġ" Ġ" ĠĠĠĠĠĠĠ Ġ// ÐµÑģ Ð»Ð¸ ĠÐ± Ñĥ ÑĦ ÐµÑĢ , ĠÑĤÐ¾ ĠÐ±ÑĥÐ´ ÐµÐ¼ ĠÐµÐ³Ð¾ ĠÐ¿ÐµÑĢ ÐµÐ¿ Ð» Ð°Ð² Ð»Ñı ÑĤÑĮ ĠÐ¸ ĠÐ± Ñĥ Ðº Ð² Ñĥ ĠÑĥ Ð¶Ðµ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ð¿ Ð¾Ð´ ÑģÑĤÐ°Ð² Ð¸Ð¼ ĠÐ² ĠÑĢ ÐµÐº ÑĥÑĢ Ñģ Ð¸Ð¸ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position Of Elem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġtmp Cube Ġ= Ġb lin de 1 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġtmp Cube Ġ= Ġb lin de 3 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> Ġtmp Cube Ġ= Ġb lin de 5 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 7 Ġ-> Ġtmp Cube Ġ= Ġb lin de 7 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 Ġ-> Ġtmp Cube Ġ= Ġb lin de 1 0 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 Ġ-> Ġtmp Cube Ġ= Ġb lin de 1 2 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 4 Ġ-> Ġtmp Cube Ġ= Ġb lin de 1 4 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 6 Ġ-> Ġtmp Cube Ġ= Ġb lin de 1 6 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 9 Ġ-> Ġtmp Cube Ġ= Ġb lin de 1 9 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 1 Ġ-> Ġtmp Cube Ġ= Ġb lin de 2 1 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 3 Ġ-> Ġ{ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÐ´Ð»Ñı ĠÐ± ÐµÐ» Ð¾ - Ðº ÑĢ Ð°Ñģ Ð½Ð¾Ð³Ð¾ ĠÑĢ ÐµÐ± ÑĢÐ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpair 4 Mel ting Ġ= Ġis All Edges On Its Place ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! pair 4 Mel ting . all Complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsc Ġ= Ġmel ting Edge ( tmp Cube , Ġsol v , Ġpair 4 Mel ting . elements Not On Place , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsol v Ġ= Ġsc . solve ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Cube Ġ= Ġsc . cube ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 Ġ-> Ġtmp Cube Ġ= Ġb lin de 2 5 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 8 Ġ-> Ġtmp Cube Ġ= Ġb lin de 2 8 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 0 Ġ-> Ġ{ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ð´ Ð»Ñı ĠÐº ÑĢ Ð°Ñģ Ð½Ð¾ - Ð± ÐµÐ» Ð¾Ð³Ð¾ ĠÑĢ ÐµÐ± ÑĢÐ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpair 4 Mel ting Ġ= Ġis All Edges On Its Place ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! pair 4 Mel ting . all Complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ð¿ ÐµÑĢ ÐµÐ¿ Ð» Ð°Ð² Ð»Ñı ÐµÐ¼ ĠÐ± Ñĥ ÑĦ ÐµÑĢ Ġ( ÑĢ ÐµÐº ÑĥÑĢ Ñģ Ð¸Ñı ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsc Ġ= Ġmel ting Edge ( tmp Cube , Ġsol v , Ġpair 4 Mel ting . elements Not On Place , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsol v Ġ= Ġsc . solve ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Cube Ġ= Ġsc . cube ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 2 Ġ-> Ġtmp Cube Ġ= Ġb lin de 3 2 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 4 Ġ-> Ġtmp Cube Ġ= Ġb lin de 3 4 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 7 Ġ-> Ġtmp Cube Ġ= Ġb lin de 3 7 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 9 Ġ-> Ġtmp Cube Ġ= Ġb lin de 3 9 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 1 Ġ-> Ġtmp Cube Ġ= Ġb lin de 4 1 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 3 Ġ-> Ġtmp Cube Ġ= Ġb lin de 4 3 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 6 Ġ-> Ġtmp Cube Ġ= Ġb lin de 4 6 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 8 Ġ-> Ġtmp Cube Ġ= Ġb lin de 4 8 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 0 Ġ-> Ġtmp Cube Ġ= Ġb lin de 5 0 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 2 Ġ-> Ġtmp Cube Ġ= Ġb lin de 5 2 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSolve Cube ( tmp Cube , Ġsol v ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠÐ£ ÑģÑĤÐ°Ð½Ð¾Ð² ÐºÐ° ĠÐ½Ð° ĠÑģÐ² Ð¾Ðµ ĠÐ¼ ÐµÑģÑĤ Ð¾ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ð° ĠÑĨ Ð²ÐµÑĤ Ð° Ġelement Position ĠÐ½Ð° ÑħÐ¾Ð´ Ñı Ñī ÐµÐ³Ð¾ ÑģÑı ĠÐ² ĠÐ± Ñĥ ÑĦ ÐµÑĢ Ðµ ĠÑĥ Ð³ Ð» Ð¾Ð² ĊĠĠĠĠĠĠĠ Ġ// ĠÐĴ Ð¾Ð· Ð²ÑĢÐ°Ñī Ð°ÐµÑĤ ĠSolve Cube Ġ= ĠÐº ÑĥÐ± ĠÐ¿Ð¾ÑģÐ» Ðµ ĠÐ²ÑĭÐ¿Ð¾Ð»Ð½ ÐµÐ½Ð¸Ñı ĠÑĥÑģÑĤÐ°Ð½Ð¾Ð² ÐºÐ¸ ĠÐ¸ ĠÑĢ ÐµÑĪ ÐµÐ½Ð¸Ðµ Ġsolve Ġ+ ĠÑĤÐµÐº Ñĥ ÑīÐ¸Ð¹ Ġ ÑħÐ¾Ð´ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcorner Buffer Solve ( cube : ĠInt Array , Ġelement Position : ĠInt , Ġsolve : ĠString , Ġcontext : ĠContext ): ĠSolve Cube Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtmp Cube Ġ= Ġcube ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġposition Of Elem Ġ= Ġelement Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsol v Ġ= Ġsolve ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Pager Lab Ġ= ĠList Pager Lab . get ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaz bu ka Ġ= Ġlist Pager Lab . getCurrent Az bu ka () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(!( position Of Elem Ġ== Ġ 1 8 Ġ|| Ġposition Of Elem Ġ== Ġ 1 1 Ġ|| Ġposition Of Elem Ġ== Ġ 6 )) Ġ{ ĠĠĠĠĠĠĠĠĠĠ Ġ// ÐµÑģ Ð»Ð¸ ĠÑģ ĠÐ½Ðµ ĠÑĢÐ°Ð ² Ð½Ð¾ Ġ 1 8 , 1 1 ĠÐ¸Ð»Ð¸ Ġ 6 , ĠÑĤÐ¾ ĠÐ± Ñĥ ÑĦ ÐµÑĢ ĠÐ½Ðµ ĠÐ½Ð° ĠÐ¼ ÐµÑģÑĤ Ðµ ĠÐ¸ ĠÐ´Ð¾Ð±Ð°Ð² Ð»Ñı ÐµÐ¼ ĠÐ± Ñĥ Ðº Ð² Ñĥ ĠÐº ĠÑĢ ÐµÑĪ ÐµÐ½Ð¸ Ñİ . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsol v Ġ+= Ġaz bu ka [ position Of Elem ] Ġ+ Ġ" Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( element Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġtmp Cube Ġ= Ġb lin de 0 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġtmp Cube Ġ= Ġb lin de 2 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpair 4 Mel ting Ġ= Ġis All C orners On Its Place ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! pair 4 Mel ting . all Complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsc Ġ= Ġmel ting Corner ( tmp Cube , Ġsol v , Ġpair 4 Mel ting . elements Not On Place , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsol v Ġ= Ġsc . solve ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Cube Ġ= Ġsc . cube ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 8 Ġ-> Ġtmp Cube Ġ= Ġb lin de 8 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 Ġ-> Ġtmp Cube Ġ= Ġb lin de 9 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpair 4 Mel ting Ġ= Ġis All C orners On Its Place ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! pair 4 Mel ting . all Complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsc Ġ= Ġmel ting Corner ( tmp Cube , Ġsol v , Ġpair 4 Mel ting . elements Not On Place , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsol v Ġ= Ġsc . solve ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Cube Ġ= Ġsc . cube ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 5 Ġ-> Ġtmp Cube Ġ= Ġb lin de 1 5 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 7 Ġ-> Ġtmp Cube Ġ= Ġb lin de 1 7 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpair 4 Mel ting Ġ= Ġis All C orners On Its Place ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! pair 4 Mel ting . all Complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsc Ġ= Ġmel ting Corner ( tmp Cube , Ġsol v , Ġpair 4 Mel ting . elements Not On Place , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsol v Ġ= Ġsc . solve ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Cube Ġ= Ġsc . cube ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 Ġ-> Ġtmp Cube Ġ= Ġb lin de 2 0 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 4 Ġ-> Ġtmp Cube Ġ= Ġb lin de 2 4 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 6 Ġ-> Ġtmp Cube Ġ= Ġb lin de 2 6 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 7 Ġ-> Ġtmp Cube Ġ= Ġb lin de 2 7 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 9 Ġ-> Ġtmp Cube Ġ= Ġb lin de 2 9 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 3 Ġ-> Ġtmp Cube Ġ= Ġb lin de 3 3 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 5 Ġ-> Ġtmp Cube Ġ= Ġb lin de 3 5 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 6 Ġ-> Ġtmp Cube Ġ= Ġb lin de 3 6 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 8 Ġ-> Ġtmp Cube Ġ= Ġb lin de 3 8 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 2 Ġ-> Ġtmp Cube Ġ= Ġb lin de 4 2 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 4 Ġ-> Ġtmp Cube Ġ= Ġb lin de 4 4 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 5 Ġ-> Ġtmp Cube Ġ= Ġb lin de 4 5 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 7 Ġ-> Ġtmp Cube Ġ= Ġb lin de 4 7 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 1 Ġ-> Ġtmp Cube Ġ= Ġb lin de 5 1 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 3 Ġ-> Ġtmp Cube Ġ= Ġb lin de 5 3 ( tmp Cube ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSolve Cube ( tmp Cube , Ġsol v ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġmel ting Edge ( tmp Cube : ĠInt Array , Ġsol v : ĠString , Ġedges List Not On Place : ĠSorted Map < Int , Int >, Ġcontext : ĠContext Ġ): ĠSolve Cube Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġposition Of Element Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÑĨ Ð¸Ðº Ð» ĠÐ¿Ð¾ Ð¸Ñģ ÐºÐ° ĠÑģÐ² Ð¾Ð± Ð¾Ð´ Ð½Ð¾Ð¹ ĠÐº Ð¾ÑĢ Ð· Ð¸ Ð½Ñĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġj Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( position Of Element Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( edge Priority [ j ] Ġ== Ġedges List Not On Place [ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Of Element Ġ= Ġedge Priority [ j ] !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ// Ð¸ Ñī ÐµÐ¼ ĠÑĢ ÐµÐ± ÑĢÐ° ĠÐ½Ð° ĠÑģÐ² Ð¾ ÐµÐ¼ ĠÐ¼ ÐµÑģÑĤ Ðµ ĠÐ¿Ð¾ ĠÐ¿ÑĢÐ¸ Ð¾ÑĢ Ð¸ÑĤ ÐµÑĤ Ñĥ Ġedge Priority ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( edges List Not On Place [ i ] Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ð¿ ÐµÑĢ ÐµÐ¿ Ð» Ð°Ð² Ð»Ñı ÐµÐ¼ ĠÐ± Ñĥ ÑĦ ÐµÑĢ Ġ( ÑĢ ÐµÐº ÑĥÑĢ Ñģ Ð¸Ñı ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġedge Buffer Solve ( tmp Cube , Ġposition Of Element , Ġsol v , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġmel ting Corner ( tmp Cube : ĠInt Array , Ġsol v : ĠString , Ġcorners List Not On Place : ĠSorted Map < Int , Int >, Ġcontext : ĠContext ): ĠSolve Cube Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġposition Of Element Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÑĨ Ð¸Ðº Ð» ĠÐ¿Ð¾ Ð¸Ñģ ÐºÐ° ĠÑģÐ² Ð¾Ð± Ð¾Ð´ Ð½Ð¾Ð¹ ĠÐº Ð¾ÑĢ Ð· Ð¸ Ð½Ñĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġj Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( position Of Element Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( corner Priority [ j ] Ġ== Ġcorners List Not On Place [ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Of Element Ġ= Ġcorner Priority [ j ] !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ// Ð¸ Ñī ÐµÐ¼ ĠÑĢ ÐµÐ± ÑĢÐ° ĠÐ½Ð° ĠÑģÐ² Ð¾ ÐµÐ¼ ĠÐ¼ ÐµÑģÑĤ Ðµ ĠÐ¿Ð¾ ĠÐ¿ÑĢÐ¸ Ð¾ÑĢ Ð¸ÑĤ ÐµÑĤ Ñĥ Ġcorner Priority ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( corners List Not On Place [ i ] Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ð¿ ÐµÑĢ ÐµÐ¿ Ð» Ð°Ð² Ð»Ñı ÐµÐ¼ ĠÐ± Ñĥ ÑĦ ÐµÑĢ Ġ( ÑĢ ÐµÐº ÑĥÑĢ Ñģ Ð¸Ñı ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcorner Buffer Solve ( tmp Cube , Ġposition Of Element , Ġsol v , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġis All Edges On Its Place ( cube : ĠInt Array ): ĠPair 4 Mel ting Ġ{ ĠĠĠ Ġ// Ð¿ ÑĢÐ¾Ð² ÐµÑĢ Ñı ÐµÐ¼ ĠÐ²ÑģÐµ ĠÐ» Ð¸ ĠÐ³ ÑĢ Ð°Ð½Ð¸ ĠÐ½Ð° ĠÑģÐ² Ð¾ Ð¸Ñħ ĠÐ¼ ÐµÑģÑĤ Ð°Ñħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ð¿ ÑĢÐµÐ´ Ð¿ Ð¾Ð» Ð¾Ð¶ Ð¸Ð¼ ĠÑĩÑĤÐ¾ ĠÐ²ÑģÐµ ĠÐ½Ð° ĠÐ¼ ÐµÑģÑĤ Ð°Ñħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ðŀ Ð± Ð½ Ñĥ Ð»Ñı ÐµÐ¼ ĠÑģÐ¿Ð¸Ñģ Ð¾Ðº ĠÑĢ ÐµÐ± ÐµÑĢ ĠÑģ ÑĤÐ¾ Ñı ÑīÐ¸ Ñħ ĠÐ½Ð° ĠÐ¼ ÐµÑģÑĤ Ð°Ñħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġedges List Not On Place : ĠSorted Map < Int , Int > Ġ= Ġsorted Map Of ( 0 Ġto Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedges List Not On Place . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġj Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 5 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsec Color Ġ= Ġdop Edge [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sec Color Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Color Ġ= Ġget Color Of Element ( cube , i , sec Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( main Edge [ first Color ] Ġ!= Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedges List Not On Place [ j ] Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPair 4 Mel ting ( result , Ġedges List Not On Place ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġis All C orners On Its Place ( cube : ĠInt Array ): ĠPair 4 Mel ting Ġ{ ĠĠĠ Ġ// Ð¿ ÑĢÐ¾Ð² ÐµÑĢ Ñı ÐµÐ¼ ĠÐ²ÑģÐµ ĠÐ» Ð¸ ĠÑĥ Ð³ Ð» Ñĭ ĠÐ½Ð° ĠÑģÐ² Ð¾ Ð¸Ñħ ĠÐ¼ ÐµÑģÑĤ Ð°Ñħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ð¿ ÑĢÐµÐ´ Ð¿ Ð¾Ð» Ð¾Ð¶ Ð¸Ð¼ ĠÑĩÑĤÐ¾ ĠÐ²ÑģÐµ ĠÐ½Ð° ĠÐ¼ ÐµÑģÑĤ Ð°Ñħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ðŀ Ð± Ð½ Ñĥ Ð»Ñı ÐµÐ¼ ĠÑģÐ¿Ð¸Ñģ Ð¾Ðº ĠÑĥ Ð³ Ð» Ð¾Ð² ĠÑģ ÑĤÐ¾ Ñı ÑīÐ¸ Ñħ ĠÐ½Ð° ĠÑģÐ² Ð¾ Ð¸Ñħ ĠÐ¼ ÐµÑģÑĤ Ð°Ñħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcorners List Not On Place : ĠSorted Map < Int , Int > Ġ= Ġsorted Map Of ( 0 Ġto Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcorners List Not On Place . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġj Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ðĳ ÑĥÐ´ ÐµÐ¼ ĠÐ¿ÑĢ Ð¾Ð²ÐµÑĢ Ñı ÑĤÑĮ ĠÐ²ÑģÐµ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ñĭ ĠÐº ÑĥÐ± Ð¸ ÐºÐ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 5 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ÐŁ ÑĢÐ¾Ð² ÐµÑĢ Ñı ÐµÐ¼ ĠÐ´Ð°Ð½ Ð½ÑĭÐ¹ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ ĠÑĥ Ð³ Ð¾Ð» ĠÐ¸Ð»Ð¸ ĠÑĢ ÐµÐ± ÑĢÐ¾ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsec Color Ġ= Ġdop Corner [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sec Color Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf color Ġ= Ġget Color Of Element ( cube , i , sec Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( main Corner [ f color ] Ġ!= Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorners List Not On Place [ j ] Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPair 4 Mel ting ( result , Ġcorners List Not On Place ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊ Ċ } Ċ