blob: 791198cdea3df74307f9e5719666d5009e404344 (
plain)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) INRIA
//
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution. The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
//
function [r,ind]=recons(r,ind)
//reconstruct a list from a flat list (see aplat)
if ind==-1 then return;end
nr=size(r)
ma=0
for k=nr:-1:1
mm=size(ind(k),"*");
if ma<=mm then ma=mm;ki=k; end
end
if ma<=1 then return; end
vi=ind(ki);vi=vi(1:ma-1);
k=ki
vj=vi
while vj==vi
k=k+1
if k>nr then break; end
vv=ind(k);
if size(vv,"*")==ma then vj=vv(1:ma-1); else vj=[]; end
end
kj=k-1
rt=list(r(ki))
for k=ki+1:kj
rt(k-ki+1)=r(ki+1)
r(ki+1)=null()
ind(ki+1)=null()
end
ind(ki)=vi
r(ki)=rt
[r,ind]=recons(r,ind)
endfunction
|