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 322128

Submitted on 22 Sep 2013 by Alfonso Nieto-Castanon

Correct

1487Size
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
3 1 2
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 3
4 1 3 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 6
2 5 4 1 3
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
4 5 6 2 1 3
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
3 1 4 6 7 5 2
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 22
6 1 5 7 8 3 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 29
6 1 5 9 2 7 8 3 4
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 34
2 3 7 5 9 10 4 1 6 8
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 40
10 2 7 11 9 4 3 1 6 5 8
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 58
8 10 1 4 9 12 6 3 13 11 5 2 7
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
12 17 5 9 4 16 3 7 1 2 10 13 15 8 14 6 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 108
18 9 15 2 10 12 17 11 1 7 4 19 14 16 8 13 3 5 6
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 147
9 3 2 5 10 21 15 16 11 6 14 18 23 8 7 12 13 4 22 17 20 1 19
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 250
21 1 29 5 6 12 15 26 19 27 14 24 3 25 20 4 11 2 9 23 13 18 16 28 10 7 17 22 8
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 226
28 1 19 22 3 16 2 21 13 4 31 25 27 26 10 11 14 17 12 9 5 15 7 30 6 23 20 18 29 8 24
Elapsed time is 29.070651 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 29.108606 seconds.