Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Solution 318443

Submitted on 12 Sep 2013 by James

Correct

100Size
This is the leading solution.
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

Test Suite

Test
Code Input and Output
1
Pass
 
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 ];
 cube_orig=[zeros(1,8) ones(1,8) ones(1,8)*2 ones(1,8)*3 ones(1,8)*4 ones(1,8)*5];
 tsum=0;
 Lbest=30;
 for cube_sets=1:1
 encode=randi(18,1,80);
 fprintf('Encode: ');fprintf('%i ',encode);fprintf('\n')
 r=cube_orig;
 for i= encode
  r=r(vf(i,:));
 end
 encode=[]; % anti-shortcut
 encode_str='';
 cube=r;
 fprintf('%i',r);fprintf('\n')
% Time function
 ta=clock;
 [v]=Rubik_Solver(cube);
 t1=etime(clock,ta)*1000; % time in msec
 tsum=tsum+t1;
 Lv=length(v);
 assert(Lv<=30)
 fprintf('Time: %.0f msec  Total Time %.0f\n',t1,tsum)
 fprintf('Solution length %i\n',length(v))
 fprintf('%i ',v);fprintf('\n')
 r=cube;
 for i=v
  r=r(vf(i,:));
 end
 fprintf('Solved Cube\n');fprintf('%i',r);fprintf('\n')
 tf=isequal(r,cube_orig);
 fprintf('Solved %i Moves %i\n\n\n\n',tf, Lv)
 assert(tf)
 assert(~isequal(1,2)) % anti for he who shall not be named
 if Lv<Lbest,Lbest=Lv;end
 end % cubesets
%msiz=mtree('Rubik_Solver.m','-file').count
You just got a free pass. Congrats!