Re: Re: Mathematica 6.0 easier for me ... (small review)
- To: mathgroup at smc.vnet.net
- Subject: [mg76633] Re: [mg76556] Re: [mg76457] Mathematica 6.0 easier for me ... (small review)
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Fri, 25 May 2007 06:25:14 -0400 (EDT)
- References: <200705230859.EAA23180@smc.vnet.net> <2889719.1180010222826.JavaMail.root@m35> <op.tst6hjbkqu6oor@monster.ma.dl.cox.net>
They are just instances of the most sensational and undocumented new
feature of Mathematica 6: mind reading. $1, $2 ... etc, stand for
whatever the programmer has in mind when he writes his program and
they keep their values even when the code is shared by e-mail. Of
course an invention of this kind had to be kept strictly secret lest
a total panic ensued (comparable to what happened after Orson Wells'
famous broadcast of "War of the Worlds"), so naturally your 20
minutes spent on searching the documentation were a sheer waste of time.
However, since only the original programmer knows what he had in
mind, I hasten to explain. $1 (and the not really needed $2) stand
for anything that is different from all other defined symbols in the
current session. I used this new powerful and secret technology
simply because I was just too much in a hurry to use obsolete old
constructs like Block, Module, or Unique for what was not intended as
serious code but only an illustration.
As the OP did not really explain clearly what he wanted, I had to
interpret his intentions myself, and my interpretation was that he
was looking for specific "jumps" form one given value to another
given value, and wanted to ignore any other possible jumps. Probably
this interpretation was incorrect since all other posters seem to
have assumed something different.
Andrzej Kozlowski
On 24 May 2007, at 23:57, DrMajorBob wrote:
> Twenty minutes search of the documentation yields no clue what $1
> and $2 are about.
>
> Care to share the secret?
>
> Bobby
>
> On Thu, 24 May 2007 04:53:53 -0500, Andrzej Kozlowski
> <akoz at mimuw.edu.pl> wrote:
>
>>
>> On 23 May 2007, at 17:59, Paul at desinc.com wrote:
>>
>>> If I have
>>> lis={{1,10},{2,10},...{9,10},{11,20},{12,20}...{19,20}
>>>
>>> How do I use functional and/or rule to determine where the second
>>> number (lis[[i,2]]) jumped from 10 to 20 to 30 and save the pair.
>>> Assuming there was noise, I only want to store the first 10->20,
>>> then
>>> look for 20->30 and so on. So in time, I want my search to
>>> change as
>>> I progress through the list. Any input appreciated!
>>
>> I am not quite sure if I really understand what you wish to do. But
>> if what I think is correct, then it seems easy to do it using rule
>> based programming:
>>
>> FirstJump[lis_, n_, m_] := Flatten[({
>> lis} /. {___, {x_, n}, {y_, m}, ___} :> Position[lis, {x, n}])]
>>
>> For example:
>>
>>
>> ls={{1,10},{2,10},{9,10},{11,20},{12,20},{19,20},{20,30}};
>>
>>
>> FirstJump[ls,10,20]
>>
>> {3}
>>
>>
>> FirstJump[ls,20,30]
>>
>> {6}
>>
>> The above assumes that all the pairs in your list are distinct. If
>> they are not, then something more complicated is needed, e.g.:
>>
>> Clear[FirstJump]
>>
>> FirstJump[lis_, n_, m_] := Position[Flatten[({lis} /. {a___, {x_,
>> n}, {
>> y_, m}, b___} :> {a, $1, $2, b}), 1], $1, 1]
>>
>> ls = {{1,10}, {2, 10}, {9, 10}, {9, 10}, {11, 20}, {12, 20}, {19,
>> 20}, {20, 30}};
>>
>>
>> FirstJump[ls, 10, 20]
>>
>> {{4}}
>>
>>
>> Andrzej Kozlowski
>>
>>
>
>
>
> --
> DrMajorBob at bigfoot.com
- References:
- Mathematica 6.0 easier for me ... (small review)
- From: Paul@desinc.com
- Mathematica 6.0 easier for me ... (small review)