Dear GAP Forum,

On 11 Jun 2007, at 14:45, muniru asiru wrote:

I need help.

While working with Gap, I came accross the following
list of list of list with 10,3 and 7 items
respectively.  My interest is to REPLACE (please note)
this list of list of list (a5, below) with a list of
list so that I will have 30 elements made up of 7
elements in each list of list.


Thank you

There is a more general solution using my function "Array" (attached). That means, thereby you can reformat deliberately your list structure:

a5:=[ [ [ ... ] ] ];
a307:=Array([30,7]);

a210:=Flat(a5);

k:=0;
for i in [1..30]    do
for j in [1..7] do
 k:=k+1;
 a307[i][j]:=a210[k];
od; #j
od;  #i

gap> Length(a307);
30
gap> Length(a307[1]);
7
gap> a210test:=Flat(a307);;
gap> a210=a210test;
true
gap>

all the best, Rudolf Zlabinger
Array:=function(bounds)

# creates an array of empty lists of arbitrary nesting levels (dimensions)
# and bounds for each level
# bounds is a list of positive integers determining the length of each dimension
# the length of bounds is the dimension of the array

# at element level the dimension of the array is 1 higher, # as the last level are also empty lists

local array,IterateArray;

IterateArray:=function(array,bounds)
# iterative call for decreasing levels of array and bounds

local i,dim,boundsrecall;

# i.. index, # dim the recent level of bounds, # boundsrecall.. shortened bounds for recalls

dim:=Length(bounds);                   # the varying length of bounds

for i in [1..bounds[1]] do              # 1 recallcascade for one add

 Add(array,[]);                         # enlarging the recent level of array

 if dim>1 then                          # dim=1 is the last level

boundsrecall:=bounds{[2..dim]}; # shorten bounds for next level IterateArray(array[i],boundsrecall); # recursion for the next lower level of array
 fi;                                    # end of dimension > 1 clause

od;                                    # end of bound loop

return array;
end;


array:=[];


array:=IterateArray(array,bounds); # starting call of add cascade

return array;
end;
_______________________________________________
Forum mailing list
[email protected]
http://mail.gap-system.org/mailman/listinfo/forum

Reply via email to