package Ġcom . pu zz let imer . tips Ċ Ċ import Ġcom . pu zz let imer . tips . Tip Ċ import Ġcom . pu zz let imer . models . Scr amble Ċ import Ġcom . pu zz let imer . sol vers . Rub iks Cube Solver Ċ import Ġjava . lang . StringBuilder Ċ import Ġjava . util . ArrayList Ċ import Ġjava . util . HashMap Ċ Ċ class ĠRub iks Cube Classic Po ch mann Edges Ġ: ĠTip Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtip Id : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" R UB I KS - CUBE - CLASS IC - POCH MAN N - ED GES " ĊĠĠĠ Ġoverride Ġval Ġpuzzle Id : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" R UB I KS - CUBE " ĊĠĠĠ Ġoverride Ġval Ġtip Description : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_(" tip . R UB I KS - CUBE - CLASS IC - POCH MAN N - ED GES ") ĊĊĠĠĠ Ġoverride Ġfun Ġget Tip ( scr amble : ĠScr amble ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠRub iks Cube Solver . State . id . apply Sequence ( scr amble !!. sequence ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġpieces Ġalready Ġsolved ĊĠĠĠĠĠĠĠ Ġval Ġsolved Ġ= ĠBoolean Array ( 1 2 ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġsolved . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsolved [ i ] Ġ= Ġi Ġ== Ġ 5 Ġ|| Ġstate . edges Per mutation [ i ] Ġ== Ġi Ġ&& Ġstate . edges Orientation [ i ] Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġst icker Ġsequence ĊĠĠĠĠĠĠĠ Ġval Ġst icker Sequence Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġval Ġst icker Names Ġ= ĠarrayOf ( array Of (" BL ", Ġ" LB "), ĠarrayOf (" BR ", Ġ" RB "), ĠarrayOf (" FR ", Ġ" RF "), ĠarrayOf (" FL ", Ġ" LF "), ĠarrayOf (" UB ", Ġ" BU "), ĠarrayOf (" UR ", Ġ" RU "), ĠarrayOf (" UF ", Ġ" FU "), ĠarrayOf (" UL ", Ġ" LU "), ĠarrayOf (" DB ", Ġ" BD "), ĠarrayOf (" DR ", Ġ" RD "), ĠarrayOf (" DF ", Ġ" FD "), ĠarrayOf (" DL ", Ġ" LD ")) ĊĠĠĠĠĠĠĠ Ġvar Ġcycle First Piece Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Per mutation Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Orientation Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnext Per mutation Ġ= Ġstate . edges Per mutation [ current Per mutation ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnext Orientation Ġ= Ġ( 2 Ġ- Ġstate . edges Orientation [ current Per mutation ] Ġ+ Ġcurrent Orientation ) Ġ% Ġ 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbreak Ġinto Ġa Ġnew Ġcycle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( next Per mutation Ġ== Ġcycle First Piece ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cycle First Piece Ġ!= Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġst icker Sequence . add ( st icker Names [ next Per mutation ][ next Orientation ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġall Pieces S olved Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 1 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! solved [ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcycle First Piece Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Per mutation Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Orientation Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Per mutation Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Orientation Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Pieces S olved Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( all Pieces S olved ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġst icker Sequence . add ( st icker Names [ next Per mutation ][ next Orientation ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Per mutation Ġ= Ġnext Per mutation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Orientation Ġ= Ġnext Orientation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsolved [ current Per mutation ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġsolution ĊĠĠĠĠĠĠĠ Ġval Ġtip Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġtip . append (_(" tip . R UB I KS - CUBE - CLASS IC - POCH MAN N - ED GES ")). append (" :\ n ") ĊĠĠĠĠĠĠĠ Ġtip . append (" Ġ Ġ[ T 1 ] Ġ ĠR ĠU ĠR ' ĠU ' ĠR ' ĠF ĠR 2 ĠU ' ĠR ' ĠU ' ĠR ĠU ĠR ' ĠF '\ n ") ĊĠĠĠĠĠĠĠ Ġtip . append (" Ġ Ġ[ T 2 ] Ġ Ġx ' ĠR 2 ĠU ' ĠR ' ĠU Ġx ĠR ' ĠF ' ĠU ' ĠF ĠR ĠU ĠR ' ĠU '\ n ") ĊĠĠĠĠĠĠĠ Ġtip . append (" Ġ Ġ[ J 1 ] Ġ ĠR ĠU ĠR ' ĠF ' ĠR ĠU ĠR ' ĠU ' ĠR ' ĠF ĠR 2 ĠU ' ĠR ' ĠU '\ n ") ĊĠĠĠĠĠĠĠ Ġtip . append (" Ġ Ġ[ J 2 ] Ġ ĠR ' ĠU 2 ĠR ĠU ĠR ' ĠU 2 ĠL ĠU ' ĠR ĠU ĠL '\ n ") ĊĠĠĠĠĠĠĠ Ġtip . append ("\ n ") ĊĠĠĠĠĠĠĠ Ġval Ġletter ing Scheme Ġ= ĠHashMap < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" UB "] Ġ= Ġ" A " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" UR "] Ġ= Ġ" B " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" UF "] Ġ= Ġ" C " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" UL "] Ġ= Ġ" D " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" LU "] Ġ= Ġ" E " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" LF "] Ġ= Ġ" F " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" LD "] Ġ= Ġ" G " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" LB "] Ġ= Ġ" H " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" FU "] Ġ= Ġ" I " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" FR "] Ġ= Ġ" J " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" FD "] Ġ= Ġ" K " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" FL "] Ġ= Ġ" L " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" RU "] Ġ= Ġ" M " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" RB "] Ġ= Ġ" N " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" RD "] Ġ= Ġ" O " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" RF "] Ġ= Ġ" P " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" BU "] Ġ= Ġ" Q " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" BL "] Ġ= Ġ" R " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" BD "] Ġ= Ġ" S " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" BR "] Ġ= Ġ" T " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" DF "] Ġ= Ġ" U " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" DR "] Ġ= Ġ" V " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" DB "] Ġ= Ġ" W " ĊĠĠĠĠĠĠĠ Ġletter ing Scheme [" DL "] Ġ= Ġ" X " ĊĠĠĠĠĠĠĠ Ġval Ġsolutions Ġ= ĠHashMap < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġsolutions [" UB "] Ġ= Ġ"[ J 2 ]" ĊĠĠĠĠĠĠĠ Ġsolutions [" BU "] Ġ= Ġ" l Ġ[ J 1 ] Ġl '" ĊĠĠĠĠĠĠĠ Ġsolutions [" UF "] Ġ= Ġ"[ J 1 ]" ĊĠĠĠĠĠĠĠ Ġsolutions [" FU "] Ġ= Ġ" l ' Ġ[ J 2 ] Ġl " ĊĠĠĠĠĠĠĠ Ġsolutions [" UL "] Ġ= Ġ"[ T 1 ]" ĊĠĠĠĠĠĠĠ Ġsolutions [" LU "] Ġ= Ġ"[ T 2 ]" ĊĠĠĠĠĠĠĠ Ġsolutions [" BL "] Ġ= Ġ" L Ġ[ T 1 ] ĠL '" ĊĠĠĠĠĠĠĠ Ġsolutions [" LB "] Ġ= Ġ" L Ġ[ T 2 ] ĠL '" ĊĠĠĠĠĠĠĠ Ġsolutions [" BR "] Ġ= Ġ" d 2 ĠL ' Ġ[ T 1 ] ĠL Ġd 2 " ĊĠĠĠĠĠĠĠ Ġsolutions [" RB "] Ġ= Ġ" d ĠL Ġ[ T 1 ] ĠL ' Ġd '" ĊĠĠĠĠĠĠĠ Ġsolutions [" FR "] Ġ= Ġ" d 2 ĠL Ġ[ T 1 ] ĠL ' Ġd 2 " ĊĠĠĠĠĠĠĠ Ġsolutions [" RF "] Ġ= Ġ" d ' ĠL ' Ġ[ T 1 ] ĠL Ġd " ĊĠĠĠĠĠĠĠ Ġsolutions [" FL "] Ġ= Ġ" L ' Ġ[ T 1 ] ĠL " ĊĠĠĠĠĠĠĠ Ġsolutions [" LF "] Ġ= Ġ" L ' Ġ[ T 2 ] ĠL " ĊĠĠĠĠĠĠĠ Ġsolutions [" DB "] Ġ= Ġ" l 2 Ġ[ J 1 ] Ġl 2 " ĊĠĠĠĠĠĠĠ Ġsolutions [" BD "] Ġ= Ġ" l Ġ[ J 2 ] Ġl '" ĊĠĠĠĠĠĠĠ Ġsolutions [" DR "] Ġ= Ġ" S ' Ġ[ T 1 ] ĠS " ĊĠĠĠĠĠĠĠ Ġsolutions [" RD "] Ġ= Ġ" D ' Ġl ' Ġ[ J 1 ] Ġl ĠD " ĊĠĠĠĠĠĠĠ Ġsolutions [" DF "] Ġ= Ġ" l 2 Ġ[ J 2 ] Ġl 2 " ĊĠĠĠĠĠĠĠ Ġsolutions [" FD "] Ġ= Ġ" l ' Ġ[ J 1 ] Ġl " ĊĠĠĠĠĠĠĠ Ġsolutions [" DL "] Ġ= Ġ" L 2 Ġ[ T 1 ] ĠL 2 " ĊĠĠĠĠĠĠĠ Ġsolutions [" LD "] Ġ= Ġ" L 2 Ġ[ T 2 ] ĠL 2 " ĊĠĠĠĠĠĠĠ Ġfor Ġ( st icker Ġin Ġst icker Sequence ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtip . append (" Ġ Ġ( UR Ġ"). append ( st icker ). append (" ) Ġ"). append ( letter ing Scheme [ st icker ]). append (" Ġ Ġ"). append ( solutions [ st icker ]). append ("\ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtip . toString (). trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtip Description ĊĠĠĠ Ġ} Ċ }