Matlab, 59−358 − 3 = 5655
Using an anonymous function:
@(a,b)[b*a*onesflipud(b,blkdiag(a^2*ones(a) -a*b,b^2*ones(b);a^2*ones(a-a*b) a*b*ones(a,b+a*b)] ExamplesExample:
>> @(a,b)[b*a*onesflipud(b,blkdiag(a^2*ones(a) -a*b,b^2*ones(b);a^2*ones(a-a*b) a*b*ones(a,b+a*b)] ans = @(a,b)[b*a*onesflipud(b,blkdiag(a^2*ones(a) -a*b,b^2*ones(b);a^2*ones(a-a*b) a*b*ones(a,b+a*b)] >> ans(4,3) ans = 12 12 12 12 9 9 9 12 12 12 12 9 9 9 12 12 12 12 9 9 9 16 16 16 16 12 12 12 16 16 16 16 12 12 12 16 16 16 16 12 12 12 16 16 16 16 12 12 12 >> @(a,b)[b*a*onesflipud(b,blkdiag(a^2*ones(a) -a*b,b^2*ones(b);a^2*ones(a-a*b) a*b*ones(a,b+a*b)] ans = @(a,b)[b*a*onesflipud(b,blkdiag(a^2*ones(a) -a*b,b^2*ones(b);a^2*ones(a-a*b) a*b*ones(a,b+a*b)] >> ans(0,3) ans = 9 9 9 9 9 9 9 9 9 (Old solution) 59 − 3 = 56
Using an anonymous function:
@(a,b)[b*a*ones(b,a) b^2*ones(b);a^2*ones(a) a*b*ones(a,b)]