Re: Position within a list
- To: mathgroup at smc.vnet.net
- Subject: [mg32934] Re: [mg32920] Position within a list
- From: Tomas Garza <tgarza01 at prodigy.net.mx>
- Date: Wed, 20 Feb 2002 01:26:14 -0500 (EST)
- References: <200202190730.CAA18827@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
I don't know about "elegant", but a short solution could be as follows
(notice I'm taking the first 100,000 digits of Pi, instead of 10,000):
In[1]:=
lst = RealDigits[Pi, 10, 100000][[1]];
In[2]:=
Timing[Position[Length /@ Split[lst],
Max[Length /@ Split[lst]]]]
Out[2]=
{0.82 Second, {{695}}}
This is quite fast, but speed can be much improved by first assigning a name
to the list of lengths, thus avoiding a duplication of the operation:
In[3]:=
a = Length /@ Split[lst]; Timing[Position[a, Max[a]]]
Out[3]=
{0.05 Second, {{695}}}
Tomas Garza
Mexico City
----- Original Message -----
From: "Dana DeLouis" <ng_only at hotmail.com>
To: mathgroup at smc.vnet.net
Subject: [mg32934] [mg32920] Position within a list
> Hello. A long time ago someone posted an elegant solution, but I can not
> find it in the Archives.
> Given a list that may have repeating data, this returned the character
that
> was repeated the most, and its position..
>
> The example given was a list of the first 10,000 digits of Pi. I believe
> the answer was that the number 9 was repeated 6 times around position
> 700 or 800.
> The function was very short and elegant.
> I don't believe the Split function was used, but I might be wrong.
>
> Does anyone know how to do this? Thank you.
>
> lst = RealDigits[Pi,10,10000][[1]];
>
> The list would have...
> {3, 1, 4, 1, 5, 9, 2, 6, etc)
>
>
> --
> Dana DeLouis
> Windows XP & Mathematica 4.1
> = = = = = = = = = = = = = = = = =
>
>
>
>
- References:
- Position within a list
- From: "Dana DeLouis" <ng_only@hotmail.com>
- Position within a list