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 406063

Submitted on 19 Feb 2014 by Alfonso Nieto-Castanon

Correct

21Size
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
 
%%
dependencies = [
  0  0
  1  0
];
order = calculation_order(dependencies);
order_correct = [ 1 2 ];
assert(isequal(order_correct,order));

                    
2
Pass
 
%%
dependencies = [
  0  1  0  0  0
  0  0  0  0  0
  1  0  0  1  0
  1  0  0  0  0
  1  1  1  1  0
];
order = calculation_order(dependencies);
order_correct = [ 2 1 4 3 5 ];
assert(isequal(order_correct,order));

                    
3
Pass
 
%%
dependencies = [
  0  1  1  1  1
  0  0  1  1  1
  0  0  0  1  1
  0  0  0  0  1
  0  0  0  0  0
];
order = calculation_order(dependencies);
ordered = dependencies(order,order);
assert(~nnz(triu(ordered-diag(diag(ordered)))));

                    
4
Pass
 
%%
dependencies_ = tril(randi(2,10)-1);
dependencies_ = dependencies_-diag(diag(dependencies_));
order_ = randperm(size(dependencies_,1));
dependencies = dependencies_(order_,order_);
clear order_;
order = calculation_order(dependencies);
% [~,order] = sort(order_);
assert(~nnz(triu(dependencies(order,order))));

                    
5
Pass
 
%%
dependencies_ = randi(2,10)-1;
dependencies_ = dependencies_-triu(dependencies_);
order_ = randperm(size(dependencies_,1));
dependencies = dependencies_(order_,order_);
clear order_; % to prevent the evalin hack
order = calculation_order(dependencies);
% [~,order] = sort(order_);
assert(~nnz(triu(dependencies(order,order))));

                    
6
Pass
 
%%
% n = 10;
% dependencies_ = tril(randi(3,n)>1|diag(ones(1,n-1),-1))&~eye(n);
% order_ = randperm(n);
% dependencies = dependencies_(order_,order_);
dependencies = [
     0     1     1     0     1     0     0     0     0     1
     0     0     0     0     1     0     0     0     0     1
     0     1     0     0     1     0     0     0     0     1
     1     0     1     0     1     1     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     1     0     1
     1     1     1     0     0     0     0     1     1     1
     1     1     0     0     1     0     0     0     0     1
     1     1     1     1     0     1     0     1     0     1
     0     0     0     0     1     0     0     0     0     0
];
order = calculation_order(dependencies);
% [~,order_correct] = sort(order_);
order_correct = [ 5    10     2     3     1     8     6     4     9     7 ];
assert(isequal(order,order_correct));