function gene = sal(a0)
[n,L] = size(a0);
[sums is] = sort( a0 * rand(L,1) ) ;
a0 = a0( is( [ find( sums(1:(n-1)) - sums(2:n) ) ; n ] ) , : ) ;
nii = size(a0,1) ;
a = cell(nii,1);
% One line gone...yippee
for k = nii,
a{k} = a0(k,:);
end;
gTail = 2-L:0;
for N = L-1:-1:1,
i1 = 1;
while i1<=nii,
while 1,
cPart = find(strncmp(a{i1}(end+gTail),a, N));
if cPart,
mSeg = cPart(1);
if mSeg==i1,
if length(cPart)==1,
break;
else
a{i1} = [a{i1} a{cPart(2)}(1+N:end)];
nii=nii-1;
if nii < 2,
gene = a{i1};
return;
end;
if cPart(2)<i1, i1=i1-1; end;
a(cPart(2)) = [];
end;
else
a{i1} = [a{i1} a{mSeg}(1+N:end)];
nii=nii-1;
if nii < 2,
gene = a{i1};
return;
end;
if mSeg<i1, i1=i1-1; end;
a(mSeg) = [];
end;
else
break;
end;
end;
i1=i1+1;
end;
gTail(1) = [];
end;
gene = [a{:}];
|