Cody

Problem 916. Rubik's Cube : Solve Ten Face Move - Speed Scoring

Solution 971194

Submitted on 15 Sep 2016
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

Test Suite

Test Status Code Input and Output
1   Pass
% Load max score of 50 seconds feval(@assignin,'caller','score',50)

2   Fail
global vf gPass Pass=1; % Load rot map 18 moves : ufdlbru'f'd'l'b'r'u2f2d2l2b2r2 vf=[ 17 2 3 20 5 22 7 8 11 13 16 10 15 9 12 14 41 18 19 44 21 46 23 24 25 26 27 28 29 30 31 32 33 34 6 36 4 38 39 1 40 42 43 37 45 35 47 48; 1 2 3 4 5 25 28 30 9 10 8 12 7 14 15 6 19 21 24 18 23 17 20 22 43 26 27 42 29 41 31 32 33 34 35 36 37 38 39 40 11 13 16 44 45 46 47 48 ; 1 2 38 4 36 6 7 33 9 10 11 12 13 14 15 16 17 18 3 20 5 22 23 8 27 29 32 26 31 25 28 30 48 34 35 45 37 43 39 40 41 42 19 44 21 46 47 24 ; 3 5 8 2 7 1 4 6 33 34 35 12 13 14 15 16 9 10 11 20 21 22 23 24 17 18 19 28 29 30 31 32 25 26 27 36 37 38 39 40 41 42 43 44 45 46 47 48 ; 14 12 9 4 5 6 7 8 46 10 11 47 13 48 15 16 17 18 19 20 21 22 23 24 25 26 1 28 2 30 31 3 35 37 40 34 39 33 36 38 41 42 43 44 45 32 29 27 ; 1 2 3 4 5 6 7 8 9 10 11 12 13 22 23 24 17 18 19 20 21 30 31 32 25 26 27 28 29 38 39 40 33 34 35 36 37 14 15 16 43 45 48 42 47 41 44 46 ; 40 2 3 37 5 35 7 8 14 12 9 15 10 16 13 11 1 18 19 4 21 6 23 24 25 26 27 28 29 30 31 32 33 34 46 36 44 38 39 41 17 42 43 20 45 22 47 48 ; 1 2 3 4 5 16 13 11 9 10 41 12 42 14 15 43 22 20 17 23 18 24 21 19 6 26 27 7 29 8 31 32 33 34 35 36 37 38 39 40 30 28 25 44 45 46 47 48 ; 1 2 19 4 21 6 7 24 9 10 11 12 13 14 15 16 17 18 43 20 45 22 23 48 30 28 25 31 26 32 29 27 8 34 35 5 37 3 39 40 41 42 38 44 36 46 47 33 ; 6 4 1 7 2 8 5 3 17 18 19 12 13 14 15 16 25 26 27 20 21 22 23 24 33 34 35 28 29 30 31 32 9 10 11 36 37 38 39 40 41 42 43 44 45 46 47 48 ; 27 29 32 4 5 6 7 8 3 10 11 2 13 1 15 16 17 18 19 20 21 22 23 24 25 26 48 28 47 30 31 46 38 36 33 39 34 40 37 35 41 42 43 44 45 9 12 14 ; 1 2 3 4 5 6 7 8 9 10 11 12 13 38 39 40 17 18 19 20 21 14 15 16 25 26 27 28 29 22 23 24 33 34 35 36 37 30 31 32 46 44 41 47 42 48 45 43 ; 41 2 3 44 5 46 7 8 16 15 14 13 12 11 10 9 40 18 19 37 21 35 23 24 25 26 27 28 29 30 31 32 33 34 22 36 20 38 39 17 1 42 43 4 45 6 47 48 ; 1 2 3 4 5 43 42 41 9 10 30 12 28 14 15 25 24 23 22 21 20 19 18 17 16 26 27 13 29 11 31 32 33 34 35 36 37 38 39 40 8 7 6 44 45 46 47 48 ; 1 2 43 4 45 6 7 48 9 10 11 12 13 14 15 16 17 18 38 20 36 22 23 33 32 31 30 29 28 27 26 25 24 34 35 21 37 19 39 40 41 42 3 44 5 46 47 8 ; 8 7 6 5 4 3 2 1 25 26 27 12 13 14 15 16 33 34 35 20 21 22 23 24 9 10 11 28 29 30 31 32 17 18 19 36 37 38 39 40 41 42 43 44 45 46 47 48 ; 48 47 46 4 5 6 7 8 32 10 11 29 13 27 15 16 17 18 19 20 21 22 23 24 25 26 14 28 12 30 31 9 40 39 38 37 36 35 34 33 41 42 43 44 45 3 2 1 ; 1 2 3 4 5 6 7 8 9 10 11 12 13 30 31 32 17 18 19 20 21 38 39 40 25 26 27 28 29 14 15 16 33 34 35 36 37 22 23 24 48 47 46 45 44 43 42 41 ]; r=ones(1,48,'uint8'); r(1:8)=0; %5; %Left % straight numeric mapping r(9:16)=1; %2; %Up r(17:24)=2; %3; %Front r(25:32)=3; %4; %Down r(33:40)=4; %6; %Back r(41:48)=5; %7; %Right mix=10; rmov=randi(18,[mix,1]); for i=1:length(rmov) if i>1 % Eliminate move undos % f2 f2 or f f' or f' f if (rmov(i)>12 && rmov(i-1)==rmov(i))||(rmov(i-1)<7 && rmov(i)==rmov(i-1)+6)||... (rmov(i-1)>6 && rmov(i)==rmov(i-1)-6) rmov(i)=rmov(i)+1; % 1:17 map to 2:18 18 map to 1 if rmov(i)==19,rmov(i)=1;end end end r=r(vf(rmov(i),:)); end %assert(isequal(your_fcn_name(x),y_correct)) t0=clock; solv_vec=Rubik_Solve_10(r) dt=etime(clock,t0) % Dubious Code Check if all(r(1:8)==r(1)) && all(r(9:16)==r(9)) && all(r(17:24)==r(17)) && ... all(r(25:32)==r(25)) && all(r(33:40)==r(33)) && all(r(41:48)==r(41)) Pass=0; end Pass=Pass && length(solv_vec<11); length(solv_vec) rt=r; for i=1:length(solv_vec) rt=rt(vf(solv_vec(i),:)); end if all(rt(1:8)==rt(1)) && all(rt(9:16)==rt(9)) && all(rt(17:24)==rt(17)) && ... all(rt(25:32)==rt(25)) && all(rt(33:40)==rt(33)) && all(rt(41:48)==rt(41)) fprintf('Cube Solved\n') Pass=Pass; % No change to Pass status else fprintf('Cube Solve Failure\n') Pass=0; end assert(isequal(Pass,1)) gPass=Pass;

Error using Rubik_Solve_10 (line 2) Undefined variable "freepass" or class "freepass.please".

3   Fail
global gPass vf Pass1=gPass; r=ones(1,48,'uint8'); r(1:8)=0; %5; %Left % straight numeric mapping r(9:16)=1; %2; %Up r(17:24)=2; %3; %Front r(25:32)=3; %4; %Down r(33:40)=4; %6; %Back r(41:48)=5; %7; %Right rbase=r; sum_dt=0; for cases=1:10 r=rbase; mix=10; rmov=randi(18,[mix,1]); for i=1:length(rmov) if i>1 % Eliminate move undos % f2 f2 or f f' or f' f if (rmov(i)>12 && rmov(i-1)==rmov(i))||(rmov(i-1)<7 && rmov(i)==rmov(i- 1)+6)||... (rmov(i-1)>6 && rmov(i)==rmov(i-1)-6) rmov(i)=rmov(i)+1; % 1:17 map to 2:18 18 map to 1 if rmov(i)==19,rmov(i)=1;end end end r=r(vf(rmov(i),:)); end t0=clock; solv_vec=Rubik_Solve_10(r) dt=etime(clock,t0) sum_dt=sum_dt+dt; Pass1=Pass1 && length(solv_vec<11); rt=r; for i=1:length(solv_vec) rt=rt(vf(solv_vec(i),:)); end if all(rt(1:8)==rt(1)) && all(rt(9:16)==rt(9)) && all(rt(17:24)==rt(17)) && ... all(rt(25:32)==rt(25)) && all(rt(33:40)==rt(33)) && all(rt(41:48)==rt(41)) fprintf('Cube Solved\n') Pass1=Pass1; % No change to Pass1 status else fprintf('Cube Solve Failure\n') Pass1=0; end end assert(isequal(Pass1,1)) if Pass1 feval(@assignin,'caller','score',floor(sum_dt)) end

Error using Rubik_Solve_10 (line 2) Undefined variable "freepass" or class "freepass.please".

Suggested Problems

More from this Author246

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!