Re: ListDimension function
- To: mathgroup at smc.vnet.net
- Subject: [mg72584] Re: ListDimension function
- From: Peter Pein <petsie at dordos.net>
- Date: Thu, 11 Jan 2007 02:52:31 -0500 (EST)
- References: <eo25ue$as5$1@smc.vnet.net>
carlos at colorado.edu schrieb:
> Hi - I need a short function ListDimension that
> given a list returns its "brace dimensionality" =
> max number of brace levels to reach deepest entry.
> Examples
>
> List ListDimension
> a+b 0
> {1,2,x*y} 1
> {1,2,{3,0,1}} 2
> {{},{},{}} 2
> {{},{{1,2}},a} 3
>
> Built-in functions dont seem to be of help.
> Dimensions is restricted to matrix or tensor type of lists.
> Depth (minus 1) doesnt help as it is entry type dependent:
>
> Depth[{1,2,3}] -> 2
> Depth[{1,2,3+a}] -> 3
> Depth[{1,2,3+a+Sqrt[x+y]}] -> 5
>
> For the above three, ListDimension=1.
>
Hi Carlos,
with the help of Position[], it is quite easy:
In[1]:=
ListDimension = Max @@ (Length /@ Position[#1, List]) /. {} -> {0} & ;
ListDimension/@{
a+b,
{1,2,x y},
{1,2,{3,0,1}},
{{},{},{}},
{{},{{1,2}},a}
}
Out[2]=
{0,1,2,2,3}
In[3]:=
ListDimension/@{
{1,2,3},
{1,2,3+a},
{1,2,3+a+Sqrt[x+y]}
}
Out[3]=
{1,1,1}
Peter