To check coding

1 view (last 30 days)
yue ishida
yue ishida on 2 Jan 2012
I have coding as below.
a=[11 11 33 33 22 44; 33 33 33 11 11 22; 33 33 11 22 22 44; 44 44 33 22 44 11]
s = size(a);
b = zeros(s);
b(abs(a - 33) < 1e3*eps) = -10;
k = [true(s(1),1) diff(a,1,2)~=0].*a;
p = arrayfun(@(x)10*nnz(strfind(k(x,:),[33 22])),(1:s(1))');
penalty = sum(b,2) + p;
The coding is need to fulfil below conditions and cannot overlap each other:
pattern | penalty
33 33 33 | -30
33 33 22 | -20
33 11 | -10
33 33 22 | -10
33 22 | 0
Therefore, I need your help to check and correct this coding. Thank you.

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 2 Jan 2012
try this is code:
s = size(a);
b = zeros(s);
b(abs(a - 33) < 1e3*eps) = -10;
p = arrayfun(@(x)10*nnz(strfind(a(x,:),[33 22])),(1:s(1))');
penalty = sum(b,2) + p;
  4 Comments
Andrei Bobrov
Andrei Bobrov on 3 Jan 2012
Thank you Walter, corrected.
yue ishida
yue ishida on 3 Jan 2012
Yes, thank you very much...

Sign in to comment.

More Answers (0)

Tags

Products

Community Treasure Hunt

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

Start Hunting!