Cody

Problem 939. DNA Pattern Match: Performance Metric - Speed

Solution 174709

Submitted on 8 Dec 2012
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',0);

2   Fail
%% % Functionality Section Pass=1; w=6; DNA=randi(4,1,1800000,'uint8')-1; Patterns=randi(4,12,6,'uint8')-1; % Create more than needed Patterns=unique(Patterns,'rows','stable'); % Elim dupes but maintain random Patterns=Patterns(1:6,:); % Take first 6 random vectors Patterns=unique(Patterns,'rows'); % Place in order for easier debugging DNA_ID=1; Locations = find_DNA(DNA, DNA_ID, Patterns); if isempty(Locations),Pass=0;end if max(size(Locations))<1024,Pass=0;end for i=1:size(Locations,1) Pass=Pass && ismember(DNA(Locations(i,end):Locations(i,end)+w-1),Patterns,'rows'); end DNA=randi(4,1,1800000,'uint8')-1; Patterns=randi(4,24,6,'uint8')-1; % Create more than needed Patterns=unique(Patterns,'rows','stable'); % Elim dupes but maintain random Patterns=Patterns(1:12,:); % Take first 6 random vectors Patterns=unique(Patterns,'rows'); % Place in order for easier debugging DNA_ID=2; Locations = find_DNA(DNA, DNA_ID, Patterns); if isempty(Locations),Pass=0;end if max(size(Locations))<1024,Pass=0;end for i=1:size(Locations,1) Pass=Pass && ismember(DNA(Locations(i,end):Locations(i,end)+w-1),Patterns,'rows'); end assert(isequal(Pass,1))

Error: Assertion failed.

3   Pass
%% % Timing Section DNA=randi(4,1,1800000,'uint8')-1; Patterns=randi(4,12,6,'uint8')-1; % Create more than needed Patterns=unique(Patterns,'rows','stable'); % Elim dupes but maintain random Patterns=Patterns(1:6,:); % Take first 6 random vectors Patterns=unique(Patterns,'rows'); % Place in order for easier debugging DNA_ID=1; Locations = find_DNA(DNA, DNA_ID, Patterns); Locations = find_DNA(DNA, DNA_ID, Patterns); t0=clock; for i=1:10 Locations = find_DNA(DNA, DNA_ID, Patterns); end dt1=etime(clock,t0)*1000; % msec conversion fprintf('Your Set 1 Time = %i msec\n',floor(dt1)) Patterns=randi(4,24,6,'uint8')-1; % Create more than needed Patterns=unique(Patterns,'rows','stable'); % Elim dupes but maintain random Patterns=Patterns(1:12,:); % Take first 12 random vectors Patterns=unique(Patterns,'rows'); % Place in order for easier debugging t0=clock; for i=1:10 Locations = find_DNA(DNA, DNA_ID, Patterns); end dt2=etime(clock,t0)*1000; % msec conversion fprintf('Your Set 2 Time = %i msec\n',floor(dt2)) % New DNA Set DNA=randi(4,1,1800000,'uint8')-1; Patterns=randi(4,12,6,'uint8')-1; % Create more than needed Patterns=unique(Patterns,'rows','stable'); % Elim dupes but maintain random Patterns=Patterns(1:6,:); % Take first 6 random vectors Patterns=unique(Patterns,'rows'); % Place in order for easier debugging DNA_ID=2; Locations = find_DNA(DNA, DNA_ID, Patterns); Locations = find_DNA(DNA, DNA_ID, Patterns); t0=clock; for i=1:10 Locations = find_DNA(DNA, DNA_ID, Patterns); end dt3=etime(clock,t0)*1000; % msec conversion fprintf('Your Set 3 Time = %i msec\n',floor(dt3)) feval(@assignin,'caller','score',min(400,floor(double(dt1+dt2+dt3)/30)));

Your Set 1 Time = 5394 msec Your Set 2 Time = 7770 msec Your Set 3 Time = 5576 msec