function xyOut = solver(a, xyIn, wts)
xyIn = xyIn*100;
for z = 1:50
xyIn = round(cell2mat(cellfun(@(a_row) mean(xyIn(a_row==1, :), 1), num2cell(a, 1), 'uni', false)'));
tweak_overlap
end
xyOut = xyIn;
function tweak_overlap
[u I J] = unique(xyIn, 'rows');
n = size(xyIn, 1) - size(u, 1);
while(n>0)
xyIn(setdiff(1:length(xyIn), I), :) = xyIn(setdiff(1:length(xyIn), I), :) + ones(n, 2) * [1 0 ; 0 -1];
[u I J] = unique(xyIn, 'rows');
n = size(xyIn, 1) - size(u, 1);
end
end
end
|