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 322127

Submitted on 22 Sep 2013 by Alfonso Nieto-Castanon

Correct

1588Size
Leading solution size is 769.
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
 
tic
feval(@assignin,'caller','score',2000);

                    
2
Pass
 
%%
% 2 1
global cseq
cseq{1}=1; % Gift answer
max_seq=find_max_swap_seq(2);
assert(isequal(1:2,unique(max_seq)))
cseq{2}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 1
2 1
3
Pass
 
%%
% 3 2
global cseq
max_seq=find_max_swap_seq(3);
assert(isequal(1:3,unique(max_seq)))
cseq{3}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 2
2 3 1
4
Pass
 
%%
% 4 4
global cseq
max_seq=find_max_swap_seq(4);
assert(isequal(1:4,unique(max_seq)))
cseq{4}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 4
3 1 4 2
5
Pass
 
%%
% 5 7
global cseq
max_seq=find_max_swap_seq(5);
assert(isequal(1:5,unique(max_seq)))
cseq{5}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 7
3 1 4 5 2
6
Pass
 
%%
% 6 10
global cseq
max_seq=find_max_swap_seq(6);
assert(isequal(1:6,unique(max_seq)))
cseq{6}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 10
3 6 5 1 4 2
7
Pass
 
%%
% 7 16
global cseq
max_seq=find_max_swap_seq(7);
assert(isequal(1:7,unique(max_seq)))
cseq{7}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 16
4 7 6 2 1 5 3
8
Pass
 
%%
% 8 22
global cseq
max_seq=find_max_swap_seq(8);
assert(isequal(1:8,unique(max_seq)))
cseq{8}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 21
3 8 7 5 1 6 2 4
9
Pass
 
%%
% 9 30
global cseq
max_seq=find_max_swap_seq(9);
assert(isequal(1:9,unique(max_seq)))
cseq{9}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 26
7 9 3 1 4 8 5 2 6
10
Pass
 
%%
%10 38
global cseq
max_seq=find_max_swap_seq(10);
assert(isequal(1:10,unique(max_seq)))
cseq{10}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 32
8 2 9 3 6 1 10 4 7 5
11
Pass
 
%%
%11 51
global cseq
max_seq=find_max_swap_seq(11);
assert(isequal(1:11,unique(max_seq)))
cseq{11}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 42
5 1 4 10 8 11 7 9 6 2 3
12
Pass
 
%%
%13 80 case 12
global cseq
max_seq=find_max_swap_seq(13);
assert(isequal(1:13,unique(max_seq)))
cseq{12}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 48
3 7 2 8 5 12 10 6 13 4 11 1 9
13
Pass
 
%%
%17 159 case 13
global cseq
max_seq=find_max_swap_seq(17);
assert(isequal(1:17,unique(max_seq)))
cseq{13}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 92
2 8 14 13 9 1 15 5 4 17 10 6 3 12 16 7 11
14
Pass
 
%%
%19 221 case 14
global cseq
max_seq=find_max_swap_seq(19);
assert(isequal(1:19,unique(max_seq)))
cseq{14}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 109
2 5 3 14 8 15 18 11 12 4 6 9 16 13 19 17 10 7 1
15
Pass
 
%%
%23 382 case 15
global cseq
max_seq=find_max_swap_seq(23);
assert(isequal(1:23,unique(max_seq)))
cseq{15}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 122
12 15 1 11 18 16 6 17 23 5 22 8 7 10 4 19 13 14 21 2 3 20 9
16
Pass
 
%%
%29 689 case 16
global cseq
max_seq=find_max_swap_seq(29);
assert(isequal(1:29,unique(max_seq)))
cseq{16}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
count 177
7 8 15 21 3 9 18 23 11 5 20 1 12 22 6 28 13 2 29 27 24 16 10 19 26 14 25 17 4
17
Pass
 
%%
%31 819 case 17
global cseq
max_seq=find_max_swap_seq(31);
assert(isequal(1:31,unique(max_seq)))
cseq{17}=max_seq;
 seq=max_seq;
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
fprintf('count %i\n',count)
fprintf('%i ',max_seq)
fprintf('\n')
toc
count 234
25 17 9 7 15 28 16 13 23 4 2 10 1 29 22 8 5 3 19 20 30 24 31 27 14 21 26 12 6 11 18
Elapsed time is 5.861932 seconds.
18
Pass
 
%%
global cseq
total=0;
for i=2:17
 seq=cseq{i};
 count=0;
 while seq(1)>1
  count=count+1;
  seq(1:seq(1))=seq(seq(1):-1:1);
 end
 total=total+count;
end
% 2531 is optimal sum
total=sum([0 1 2 4 7 10 16 22 30 38 51 80 159 221 382 689 819])-total;
assert(total<2001); % Minimum performance requirement
toc
feval(@assignin,'caller','score',min(2000,total));
Elapsed time is 5.894403 seconds.