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 185242

Submitted on 3 Jan 2013 by James

Correct

6Size
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
 
%%
feval(@assignin,'caller','score',100);

                    
2
Pass
 
%%
tic
urlwrite('http://rmatlabtest.appspot.com/testsuite_GeneSeq_contest.mat','testsuite_GeneSeq_contest.mat')
toc
ans =
/users/msssystem4/testsuite_GeneSeq_contest.mat
Elapsed time is 0.800565 seconds.
3
Pass
 
%%
load testsuite_GeneSeq_contest
cases=size(testsuite,2);
Result=zeros(cases,3);
 for i=1:27 % Practice runs
 segments=testsuite{i};
 solution = geneseq(segments);
 end % i cases
 for i=1:29 %1:29 %cases
    segments=testsuite{i};
    OriginalGene=one_answer{i};
    t0 = cputime;
     solution = geneseq(segments); % 99.998065  51667.47  0.452
    time_elapsed = cputime-t0;
   % Check = checksequence(segments,solution);
     Check=1;
     for ichk = 1:size(segments,1)
      if isempty(findstr(segments(ichk,:),solution))
       Check=0;
       break
      end
     end
    if Check == 1
        Result(i,1) = length(solution);
        Result(i,2) = time_elapsed;
        Result(i,3) = length(OriginalGene);
    else
        Result(i,:) = Inf;
    end
 end % i cases
 fprintf('Net Time=%10.6f\n',sum(Result(:,2)))
 fprintf('Result= %10.6f\n',100*sum(Result(:,1))/sum(Result(:,3)))
 v=1000*(sum(Result(:,1)./Result(:,3))/size(Result,1)-1)+ sum(Result(:,2))*10;
 fprintf('Final Score %.2f\n',v)
 fprintf('L %5i Time %7.3f  L_orig %5i\n',Result')
 assert(max(Result(:,1))< Inf)
 feval( @assignin,'caller','score',floor(min( 100,v )) );
Net Time=  0.810000
Result=  99.994194
Final Score 6.25
L    65 Time   0.000  L_orig    65
L    65 Time   0.000  L_orig    65
L    65 Time   0.010  L_orig    65
L   100 Time   0.000  L_orig   100
L   100 Time   0.000  L_orig   100
L   100 Time   0.000  L_orig   100
L    65 Time   0.000  L_orig    65
L    65 Time   0.000  L_orig    65
L    65 Time   0.000  L_orig    65
L   100 Time   0.000  L_orig   100
L   100 Time   0.000  L_orig   100
L   100 Time   0.000  L_orig   100
L   100 Time   0.000  L_orig   100
L   100 Time   0.000  L_orig   100
L   100 Time   0.000  L_orig   100
L    67 Time   0.000  L_orig    67
L    96 Time   0.010  L_orig    97
L    37 Time   0.000  L_orig    37
L    37 Time   0.000  L_orig    37
L    67 Time   0.000  L_orig    67
L    97 Time   0.010  L_orig    97
L   400 Time   0.020  L_orig   400
L   199 Time   0.000  L_orig   200
L   100 Time   0.000  L_orig   100
L    10 Time   0.000  L_orig    10
L    25 Time   0.000  L_orig    26
L  5000 Time   0.100  L_orig  5000
L 20789 Time   0.270  L_orig 20789
L 23456 Time   0.390  L_orig 23456