Cody

Problem 1907. Capture the flag(s)

Solution 331124

Submitted on 8 Oct 2013 by Richard Zapor
  • Size: 2223
  • 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, sign in.

Test Suite

Test Status Code Input and Output
1   Pass
%% % test cases randn('seed',0); rand('seed',0); N=randi([1000 4000],50,1); S=randi([1,50],50,1); Boards=arrayfun(@(s)convn(randn(100),ones(s)/s^2,'same'),S,'uni',0); FLAGSLEFT=0; DOPLOT=false; tic; for board=1:50 B=Boards{board}; sB=sort(B(:)); B=double(B>sB(round(numel(sB)*.9))); n=N(board); path=capture_the_flag(B,n); assert(size(path,1)<=n,'too many steps'); assert(all(sum(abs(diff([1,1;path])),2)<=1),'no jumping allowed'); if DOPLOT imagesc(B); hold on; plot(path(:,2),path(:,1),'y-'); hold off; axis equal; axis off; set(gcf,'color',0*[1 1 1]); colormap(.5*gray); drawnow; end B(1)=0; B((path-1)*[1;size(B,1)]+1)=0; fprintf('test %d; left %d flags\n',board,nnz(B)); FLAGSLEFT=FLAGSLEFT+nnz(B); end toc; assignin('caller','score',10000); assert(FLAGSLEFT<=10000,sprintf('Left %d flags',FLAGSLEFT)); assignin('caller','score',FLAGSLEFT);

ans = 0 test 1; left 62 flags ans = 0 test 2; left 254 flags test 3; left 0 flags test 4; left 0 flags test 5; left 0 flags test 6; left 0 flags test 7; left 0 flags test 8; left 0 flags ans = 0 test 9; left 281 flags ans = 0 test 10; left 55 flags test 11; left 0 flags test 12; left 0 flags ans = 0 test 13; left 443 flags test 14; left 0 flags ans = 0 test 15; left 367 flags test 16; left 0 flags test 17; left 0 flags test 18; left 0 flags test 19; left 0 flags test 20; left 0 flags test 21; left 0 flags ans = 0 test 22; left 73 flags test 23; left 0 flags test 24; left 0 flags test 25; left 0 flags test 26; left 0 flags test 27; left 0 flags ans = 130 test 28; left 392 flags ans = 0 test 29; left 197 flags test 30; left 0 flags test 31; left 0 flags test 32; left 0 flags test 33; left 0 flags test 34; left 0 flags test 35; left 0 flags ans = 4 test 36; left 24 flags test 37; left 0 flags test 38; left 0 flags test 39; left 0 flags test 40; left 0 flags ans = 0 test 41; left 63 flags test 42; left 0 flags test 43; left 0 flags ans = 147 test 44; left 1 flags test 45; left 0 flags test 46; left 0 flags test 47; left 0 flags ans = 0 test 48; left 5 flags ans = 0 test 49; left 6 flags ans = 161 test 50; left 0 flags Elapsed time is 42.862772 seconds.

Suggested Problems

More from this Author38

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!