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 181428

Submitted on 25 Dec 2012 by @bmtran

Correct

934Size
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.

This solution is outdated. To rescore this solution, log in.

Test Suite

Test
Code Input and Output
1
Pass
 
%%
feval(@assignin,'caller','score',2000);

                    
2
Pass
 
%%
tic
urlwrite('http://tinyurl.com/matlab-KnotsContest','Knots_contest.mat')
urlwrite('http://tinyurl.com/matlab-numKnots','numKnots.m') % Fast numKnots
rehash path % Make numKnots.m available
toc
ans =
/users/msssystem1/Knots_contest.mat
ans =
/users/msssystem1/numKnots.m
[Warning: Function /opt/mlsedu/mdcsserver/latest/m/web_common/shadow/license.m has the same name as a
MATLAB builtin. We suggest you rename the function to avoid a potential name conflict.]
[> In verifyCode>evaluateCode at 226
  In verifyCode at 40
  In fevalJSON at 14]
[Warning: Function /opt/mlsedu/mdcsserver/latest/m/common/shadow/home.m has the same name as a MATLAB
builtin. We suggest you rename the function to avoid a potential name conflict.]
[> In verifyCode>evaluateCode at 226
  In verifyCode at 40
  In fevalJSON at 14]
[Warning: Function /opt/mlsedu/mdcsserver/latest/m/common/shadow/keyboard.m has the same name as a
MATLAB builtin. We suggest you rename the function to avoid a potential name conflict.]
[> In verifyCode>evaluateCode at 226
  In verifyCode at 40
  In fevalJSON at 14]
[Warning: Function /opt/mlsedu/mdcsserver/latest/m/common/shadow/more.m has the same name as a MATLAB
builtin. We suggest you rename the function to avoid a potential name conflict.]
[> In verifyCode>evaluateCode at 226
  In verifyCode at 40
  In fevalJSON at 14]
[Warning: Function /opt/mlsedu/mdcsserver/latest/m/common/shadow/pause.m has the same name as a MATLAB
builtin. We suggest you rename the function to avoid a potential name conflict.]
[> In verifyCode>evaluateCode at 226
  In verifyCode at 40
  In fevalJSON at 14]
Elapsed time is 3.411577 seconds.
3
Pass
 
%%
cases=50;
nKnots=zeros(cases,1);
KnotTime=zeros(cases,1);
load Knots_contest.mat
for n=1:cases
 a=testsuite(n).a;
 xyIn=testsuite(n).xyIn;
 wts=testsuite(n).wts;
 rng(2,'twister')
 time0 = cputime;
 xyOut=solver(a,xyIn,wts);
 KnotTime(n) = cputime - time0;
 if size(unique(xyOut,'rows'),1)<length(wts)
  nKnots(n)=Inf; % Points must be unique
 else
  nKnots(n)=numKnots(xyOut,a);
 end
end
for n=1:cases
 fprintf('%2i KnotTime(msec) %5i  Knots %4i\n',n,floor(KnotTime(n)*1000),nKnots(n))
end
TKnotTime=sum(KnotTime);
fprintf('Sum KnotTime %5i  msec\n',floor(TKnotTime*1000))
Tknots=sum(nKnots);;
fprintf('Knot Score %10.2f\n',Tknots)
fprintf('Cody Maximum allowed Elapsed time is approximately 53 seconds\n')
toc
feval(  @assignin,'caller','score',min( 2000,Tknots )  );
1 KnotTime(msec)  1330  Knots    7
 2 KnotTime(msec)  1480  Knots   43
 3 KnotTime(msec)    99  Knots    5
 4 KnotTime(msec)   120  Knots   23
 5 KnotTime(msec)   139  Knots   10
 6 KnotTime(msec)   520  Knots   28
 7 KnotTime(msec)   109  Knots    6
 8 KnotTime(msec)  1840  Knots   17
 9 KnotTime(msec)   140  Knots    9
10 KnotTime(msec)   149  Knots   26
11 KnotTime(msec)    90  Knots    3
12 KnotTime(msec)    90  Knots    1
13 KnotTime(msec)  2009  Knots   19
14 KnotTime(msec)   159  Knots    0
15 KnotTime(msec)   400  Knots   38
16 KnotTime(msec)  2800  Knots   41
17 KnotTime(msec)   680  Knots   22
18 KnotTime(msec)   129  Knots   17
19 KnotTime(msec)  1150  Knots   32
20 KnotTime(msec)  1229  Knots   56
21 KnotTime(msec)   150  Knots   19
22 KnotTime(msec)   680  Knots   27
23 KnotTime(msec)  2020  Knots   37
24 KnotTime(msec)   359  Knots    8
25 KnotTime(msec)    90  Knots    0
26 KnotTime(msec)    69  Knots    2
27 KnotTime(msec)   259  Knots    0
28 KnotTime(msec)   120  Knots    7
29 KnotTime(msec)    69  Knots    2
30 KnotTime(msec)  1080  Knots   18
31 KnotTime(msec)   419  Knots   20
32 KnotTime(msec)  1959  Knots   19
33 KnotTime(msec)   179  Knots    0
34 KnotTime(msec)   199  Knots   25
35 KnotTime(msec)   250  Knots   10
36 KnotTime(msec)    99  Knots    9
37 KnotTime(msec)    49  Knots    2
38 KnotTime(msec)  1930  Knots   55
39 KnotTime(msec)   990  Knots   16
40 KnotTime(msec)   259  Knots   11
41 KnotTime(msec)  1500  Knots   34
42 KnotTime(msec)  1479  Knots   35
43 KnotTime(msec)    69  Knots    6
44 KnotTime(msec)   390  Knots   12
45 KnotTime(msec)   180  Knots    9
46 KnotTime(msec)    40  Knots    0
47 KnotTime(msec)  1699  Knots   51
48 KnotTime(msec)   180  Knots   26
49 KnotTime(msec)  2750  Knots   50
50 KnotTime(msec)   300  Knots   21
Sum KnotTime 34499  msec
Knot Score     934.00
Cody Maximum allowed Elapsed time is approximately 53 seconds
Elapsed time is 40.687689 seconds.