1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| function R = factorize(N)
% N un vecteur ligne de nombres < 9999 dont on veut factoriser l'écriture en 4 caractères
M = reshape(sprintf('%04d', sort(N)), 4, numel(N)).' ;
while all(M(:,1)=='0')
M = M(:,2:end) ;
end
R = fact(M) ;
end
function R = fact(M) % le moteur, récursif, sur un tableau de n lignes et 4 caractères
A = unique(M(:,1)) ;
if size(M,2)>1
C = {} ;
for c = A'
M1 = M(M(:,1)==c,2:end) ;
fm = fact(M1) ;
C{end+1} = fm ;
end
R = '(' ;
for k=1:numel(A)-1
R = [R, A(k), C{k}, ')|('] ;
end
R = [R, A(end), C{end}, ')'] ;
else
R=['[', A', ']'] ;
end
end |
Partager