Cody

Problem 1940. Decimation - Optimized for speed

Solution 1163872

Submitted on 15 Apr 2017 by yurenchu
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
assert(isequal(speed_decimation(10,3),4))

ans = 4

2   Pass
assert(isequal(speed_decimation(1024,3),676))

ans = 676

3   Pass
assert(isequal(speed_decimation(2012,50),543))

ans = 543

4   Pass
assert(isequal(speed_decimation(30,5),3))

ans = 3

5   Pass
assert(isequal(speed_decimation(10,10),8))

ans = 8

6   Pass
assert(isequal(speed_decimation(2048,2),1))

ans = 1

7   Pass
assert(isequal(speed_decimation(2048,1024),1773))

ans = 1773

8   Pass
t_in=clock; j=1:50; v=arrayfun(@(x) speed_decimation(100000,x),j); correct=[100000 68929 92620 32942 40333 54212 27152 67341 42610 77328 82991 13252 91717 6850 45758 71249 38339 86953 63331 66903 72606 83990 87828 46101 99979 47141 16871 60389 51549 76409 42868 78390 79590 27573 95835 53636 36954 39891 45943 63811 71589 70886 49313 4069 93694 96031 20739 41403 93714 60023]; assert(all(isequal(v,correct))); t_out=etime(clock,t_in)*1000; fprintf('Actual Time = %.0f msec\n',t_out) v=[100000:100000:1000000]; v=arrayfun(@(x) speed_decimation(x,17),v); correct=[38339 162859 151602 99465 462955 559860 337009 546467 563784 364193]; assert(all(isequal(v,correct))); t_out=etime(clock,t_in)*1000; fprintf('Actual Time = %.0f msec\n',t_out) assert(isequal(speed_decimation(2^20,2^9),210856)); t_out=etime(clock,t_in)*1000; t2=min(100000,t_out); fprintf('Actual Time = %.0f msec\n',t_out) feval(@assignin,'caller','score',floor(t2));

ans = 100000 ans = 68929 ans = 92620 ans = 32942 ans = 40333 ans = 54212 ans = 27152 ans = 67341 ans = 42610 ans = 77328 ans = 82991 ans = 13252 ans = 91717 ans = 6850 ans = 45758 ans = 71249 ans = 38339 ans = 86953 ans = 63331 ans = 66903 ans = 72606 ans = 83990 ans = 87828 ans = 46101 ans = 99979 ans = 47141 ans = 16871 ans = 60389 ans = 51549 ans = 76409 ans = 42868 ans = 78390 ans = 79590 ans = 27573 ans = 95835 ans = 53636 ans = 36954 ans = 39891 ans = 45943 ans = 63811 ans = 71589 ans = 70886 ans = 49313 ans = 4069 ans = 93694 ans = 96031 ans = 20739 ans = 41403 ans = 93714 ans = 60023 Actual Time = 305 msec ans = 38339 ans = 162859 ans = 151602 ans = 99465 ans = 462955 ans = 559860 ans = 337009 ans = 546467 ans = 563784 ans = 364193 Actual Time = 648 msec ans = 210856 Actual Time = 711 msec