Re: ListDimension function

• To: mathgroup at smc.vnet.net
• Subject: [mg72572] Re: ListDimension function
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Thu, 11 Jan 2007 02:04:15 -0500 (EST)
• Organization: The Open University, Milton Keynes, UK
• References: <eo25ue\$as5\$1@smc.vnet.net>

```carlos at colorado.edu wrote:
> 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,

The following definition for ListDimension yields the expected results
when tested against the various cases you provided.

In[1]:=
ListDimension[l_] :=
Depth[DeleteCases[l, _?( !ListQ[#1] & )]] - 1;

testcases = {a + b, {1, 2, x*y}, {1, 2, {3, 0, 1}},
{{}, {}, {}}, {{}, {{1, 2}}, a}, {1, 2, 3},
{1, 2, 3 + a}, {1, 2, 3 + a + Sqrt[x + y]}};

ListDimension /@ testcases

Out[5]=
{0, 1, 2, 2, 3, 1, 1, 1}

Best regards,
Jean-Marc

```

• Prev by Date: Re: ListDimension function
• Next by Date: Re: Call-by-reference from inside a function
• Previous by thread: Re: ListDimension function
• Next by thread: Re: ListDimension function