Cody

Problem 1139. Rubik's Cube: 30 Moves or Less : Contest Scoring (Time/Size/Moves)

Solution 1669303

Submitted on 8 Nov 2018 by Oleksandr Denysenko
  • Size: 30
  • 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 Status Code Input and Output
1   Pass
feval(@assignin,'caller','score',100);

2   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; msum=0; Lbest=30; for cube_sets=1:4 if cube_sets==2 tsum=0; msum=0; end 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); msum=msum+Lv; 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)) if Lv<Lbest,Lbest=Lv;end end % cubesets msiz=mtree('Rubik_Solver.m','-file').count tsum=tsum/3000; % avg in seconds msum=msum/3; score=msum+msiz/2000+exp(tsum/3); fprintf('Size %.0f Avg Time %5.2f Moves Avg %5.1f\n',msiz,tsum,msum) feval( @assignin,'caller','score',floor(min( 100,score )) );

Encode: 9 18 1 5 12 16 4 18 6 4 13 12 6 6 13 16 12 8 5 3 15 7 14 12 5 9 8 5 12 17 18 13 12 4 9 10 14 4 15 8 15 15 16 15 12 4 2 7 13 8 13 12 6 13 2 7 5 13 7 13 18 17 13 15 4 6 3 8 18 10 9 13 2 11 1 2 16 5 17 16 230015205435335121440040143223554013241525231401 [Warning: Function assert has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potential name conflict.] [> In unix (line 32) In Rubik_Solver (line 8) In ScoringEngineTestPoint2 (line 42) In solutionTest (line 5)] Time: 68 msec Total Time 68 Solution length 0 Solved Cube 230015205435335121440040143223554013241525231401 Solved 0 Moves 0 Encode: 6 11 14 16 8 18 1 15 18 11 8 14 17 11 11 9 16 7 6 15 5 8 4 4 1 12 15 15 9 15 10 2 15 13 8 2 14 5 17 13 17 17 1 7 16 15 13 3 12 6 2 1 12 1 5 14 9 4 3 13 16 8 1 16 16 8 15 9 15 12 15 4 11 7 14 13 2 3 10 15 444320515424351534552400211034500132023311352201 [Warning: Function assert has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potential name conflict.] [> In Rubik_Solver (line 6) In ScoringEngineTestPoint2 (line 42) In solutionTest (line 5)] Time: 22 msec Total Time 22 Solution length 0 Solved Cube 444320515424351534552400211034500132023311352201 Solved 0 Moves 0 Encode: 16 15 1 9 11 16 1 2 7 2 5 2 7 10 8 7 13 11 8 11 9 2 1 16 12 11 13 3 6 9 12 10 9 9 17 18 17 3 3 15 9 13 13 11 15 13 2 4 17 18 15 10 6 18 8 16 7 13 11 4 10 17 16 9 9 17 5 7 13 6 12 11 1 13 17 12 2 16 2 12 425145431021004513024334253023342551502140015231 [Warning: Function assert has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potential name conflict.] [> In Rubik_Solver (line 6) In ScoringEngineTestPoint2 (line 42) In solutionTest (line 5)] Time: 20 msec Total Time 43 Solution length 0 Solved Cube 425145431021004513024334253023342551502140015231 Solved 0 Moves 0 Encode: 13 11 3 3 4 13 3 5 13 2 7 9 3 8 3 18 11 13 15 5 13 8 7 6 18 16 4 14 3 12 5 10 4 4 3 5 10 14 15 8 7 10 13 14 5 11 14 16 14 5 4 3 7 13 18 17 5 7 11 15 2 17 18 16 10 3 6 2 4 18 4 12 9 6 12 13 4 13 3 2 545450541025251031102440033302152323432131102454 [Warning: Function assert has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potential name conflict.] [> In Rubik_Solver (line 6) In ScoringEngineTestPoint2 (line 42) In solutionTest (line 5)] Time: 20 msec Total Time 63 Solution length 0 Solved Cube 545450541025251031102440033302152323432131102454 Solved 0 Moves 0 [Warning: Function assert has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potential name conflict.] [> In matlab.internal.getCode (line 22) In mtree (line 78) In ScoringEngineTestPoint2 (line 69) In solutionTest (line 5)] msiz = 30 Size 30 Avg Time 0.02 Moves Avg 0.0

Suggested Problems

More from this Author241

Community Treasure Hunt

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

Start Hunting!