That makes sense!. Thanks. 



Den 23:09 onsdag den 5. marts 2014 skrev Pascal Jasmin <godspiral2...@yahoo.ca>:
 
I assume the main motivation for the feature is ^:(<_)
>
>
>----- Original Message -----
>From: Bo Jacoby <bojac...@yahoo.dk>
>To: "programm...@jsoftware.com" <programm...@jsoftware.com>
>Cc: 
>Sent: Wednesday, March 5, 2014 4:43:14 PM
>Subject: Re: [Jprogramming] Simple Number Theory
>
>Interesting, Dan, but why define  ^:(<20) meaning ^:(i.<20)  ?
>
>   (-:&(+ (2&| * >:&+:)))^:(<20)11
>11 17 26 13 20 10 5 8 4 2 1 2 1 2 1 2 1 2 1 2
>   (-:&(+ (2&| * >:&+:)))^:(i.20)11
>11 17 26 13 20 10 5 8 4 2 1 2 1 2 1 2 1 2 1 2
>- Bo
>
>
>
>
>Den 16:35 onsdag den 5. marts 2014 skrev Raul Miller <rauldmil...@gmail.com>:
>
>And with ^:(-i.|integer) where 0 >: integer
>>
>>Of course, if you want more control you'll need to be more explicit:
>>
>>   >:^:(i:4) 5 6 7
>>1  2  3
>>2  3  4
>>3  4  5
>>4  5  6
>>5  6  7
>>6  7  8
>>7  8  9
>>8  9 10
>>9 10 11
>>
>>Also, >:^:(n) y is n+/y with n constrained to integers.
>>
>>Thanks,
>>
>>-- 
>>Raul
>>
>>
>>On Wed, Mar 5, 2014 at 10:10 AM, Dan Bron <j...@bron.us> wrote:
>>
>>> FYI, ^:(<integer) is a synonym for ^:(i.integer) where 0 < integer < _ .
>>>
>>> -Dan
>>>
>>>
>>>
>>> ----- Original Message ---------------
>>>
>>> Subject: Re: [Jprogramming] Simple Number Theory
>>>    From: "Linda Alvord" <lindaalv...@verizon.net>
>>>    Date: Tue, 04 Mar 2014 21:46:16 -0500
>>>      To: <programm...@jsoftware.com>
>>>
>>>    |. f ^:(i.80)2324
>>> 2 1 2 4 8 5 10 20 40 80 53 35 23 46 92 61 122 244 488 325....
>>>
>>> Linda
>>>
>>>
>>> -----Original Message-----
>>> From: programming-boun...@forums.jsoftware.com
>>> [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Linda
>>> Alvord
>>> Sent: Tuesday, March 04, 2014 8:59 PM
>>> To: programm...@jsoftware.com
>>> Subject: Re: [Jprogramming] Simple Number Theory
>>>
>>>
>>> Also:
>>>
>>>    collatz=:-:&(+2&|*>:&+:)
>>>    collatz ^:(i.10)17
>>> 17 26 13 20 10 5 8 4 2 1
>>>
>>>    f=: 13 :'-: y+(2|y)*>:+:y'
>>>    f ^:(i.10)17
>>> 17 26 13 20 10 5 8 4 2 1
>>>
>>>    collatz
>>> -:&(+ (2&| * >:&+:))
>>>    f
>>> [: -: ] + (2 | ]) * [: >: +:
>>>
>>> Linda
>>>
>>>
>>> -----Original Message-----
>>> From: programming-boun...@forums.jsoftware.com
>>> [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Devon
>>> McCormick
>>> Sent: Tuesday, March 04, 2014 12:56 PM
>>> To: J-programming forum
>>> Subject: Re: [Jprogramming] Simple Number Theory
>>>
>>> "Power" is a very useful conjunction.  Here's some simple examples of using
>>> it:
>>>
>>>    >:10     NB. Start with the increment-by-one verb ">:"
>>> 11
>>>    >:^:99]10  NB. Now apply it 99 times to the argument "10" by using ^:
>>> 109
>>>    >:^:(99) 10  NB. Another way to distinguish the "power" arg from the arg
>>> to which it's applied.
>>> 109
>>>
>>>   >:^:(i.10) 10   NB. Vector arg to power shows intermediate results.
>>> 10 11 12 13 14 15 16 17 18 19
>>>
>>>    >:^:(25>]) 10  NB. Use verb (25>]) to control power...
>>> 11
>>>    >:^:(25>])^:_ ] 10  NB. Use with verb (25>]) "infinite" number of times
>>> 25
>>>
>>> "Infinite" power keeps applying the verb until it converges (stops
>>> changing).
>>>
>>> So, J gives you infinite power.
>>>
>>> On Tue, Mar 4, 2014 at 10:25 AM, Raul Miller <rauldmil...@gmail.com>
>>> wrote:
>>>
>>> > It might be worthwhile taking a look at the different display forms of
>>> the
>>> > veb collatz. For example, consider the atomicrepresentation:
>>> >
>>> >    5!:1<'collatz'
>>> > +------------------------------------------------+
>>> > ¦+----------------------------------------------+¦
>>> > ¦¦"¦+------------------------------------------+¦¦
>>> > ¦¦ ¦¦+----------------------------------+¦+---+¦¦¦
>>> > ¦¦ ¦¦¦@.¦+-----------------------------+¦¦¦0¦0¦¦¦¦
>>> > ¦¦ ¦¦¦  ¦¦+-------------+¦+-----------+¦¦¦+---+¦¦¦
>>> > ¦¦ ¦¦¦  ¦¦¦0¦+---------+¦¦¦&¦+-------+¦¦¦¦     ¦¦¦
>>> > ¦¦ ¦¦¦  ¦¦¦ ¦¦cole¦colo¦¦¦¦ ¦¦+---+¦|¦¦¦¦¦     ¦¦¦
>>> > ¦¦ ¦¦¦  ¦¦¦ ¦+---------+¦¦¦ ¦¦¦0¦2¦¦ ¦¦¦¦¦     ¦¦¦
>>> > ¦¦ ¦¦¦  ¦¦+-------------+¦¦ ¦¦+---+¦ ¦¦¦¦¦     ¦¦¦
>>> > ¦¦ ¦¦¦  ¦¦               ¦¦ ¦+-------+¦¦¦¦     ¦¦¦
>>> > ¦¦ ¦¦¦  ¦¦               ¦+-----------+¦¦¦     ¦¦¦
>>> > ¦¦ ¦¦¦  ¦+-----------------------------+¦¦     ¦¦¦
>>> > ¦¦ ¦¦+----------------------------------+¦     ¦¦¦
>>> > ¦¦ ¦+------------------------------------------+¦¦
>>> > ¦+----------------------------------------------+¦
>>> > +------------------------------------------------+
>>> >
>>> >
>>> > Working inwards from the outside, we see that the top level control is
>>> the
>>> > rank adverb. Its arguments are represented as a gerund and the noun 0
>>> (the
>>> > first '0' says that this is a noun, the second is the value of the noun).
>>> >
>>> > The top level control in the gerund is the @. conjunction. And
>>> > http://www.jsoftware.com/help/dictionary/d621.htm says that the rank of
>>> @.
>>> > is determined by the rank of its right verb, which leads to your
>>> question.
>>> > But what is that right verb?
>>> >
>>> > According to the diagram, above, the right verb for @. has & as its top
>>> > level control. And according to
>>> > http://www.jsoftware.com/help/dictionary/d630n.htm the monadic rank of
>>> 2&|
>>> > is infinite.
>>> >
>>> > (Hopefully you do not consider this approach to be too tedious - or, if
>>> so,
>>> > hopefully you skipped down to the end and then read the last couple
>>> > paragraphs.)
>>> >
>>> > Thanks,
>>> >
>>> > --
>>> > Raul
>>> >
>>> >
>>> >
>>> > On Tue, Mar 4, 2014 at 10:07 AM, Jon Hough <jgho...@outlook.com> wrote:
>>> >
>>> > > Thanks for all the replies.OK, I'm starting to understand more now. I
>>> did
>>> > > not know about agenda (@.). Well actually, I read about it in the
>>> > > jsoftware.com dictionary, but I think J is one of those things you
>>> have
>>> > > to see in action before it clicks.
>>> > > What I've gone with:
>>> > > cole =. 2&(%~) NB. even case
>>> > >  colo =. (1&+)@(3&*)
>>> > >   collatz =.cole`colo@.(2&|)"0 NB. Rank 0 lets us work on each element
>>> > of
>>> > > a list
>>> > >
>>> > > So my next question is how do I go about iterating this until we reach
>>> 1?
>>> > > Incidentally, it seems to me that | is rank 0 (right rank)
>>> > > http://www.jsoftware.com/help/dictionary/d230.htm Therefore I am
>>> puzzled
>>> > > why the verb collatz does not act on each rank 0 element of the noun.
>>> Why
>>> > > did I have to explicitly force its right rank to be 0?
>>> > > Regarding iterations,Bo Jacoby kindly mentioned:
>>> > >  collatz=:-:&(+2&|*>:&+:)   collatz ^:(i.10)17
>>> > > 17 26 13 20 10 5 8 4 2 1
>>> > > But I'm struggling to understand this verb. Any help explaining this
>>> > would
>>> > > be appreciated. Or help making my own collatz verb into an iterative
>>> > > function (verb).
>>> > > Regards,Jon
>>> > > > Date: Mon, 3 Mar 2014 18:59:04 -0800
>>> > > > From: d...@shaw.ca
>>> > > > To: programm...@jsoftware.com
>>> > > > Subject: Re: [Jprogramming] Simple Number Theory
>>> > > >
>>> > > > This might be more readable - I had some bold faced characters so got
>>> > > > the extra dusting of *
>>> > > >
>>> > > > Don
>>> > > >
>>> > > > collatz=:(1 0=2|])#(3*1+]),2%~]
>>> > > >
>>> > > > collatz 4
>>> > > >
>>> > > > 2
>>> > > >
>>> > > > collatz 5
>>> > > >
>>> > > > 18
>>> > > >
>>> > > > collatz _4
>>> > > >
>>> > > > _2
>>> > > >
>>> > > > collatz _5
>>> > > >
>>> > > > _12
>>> > > >
>>> > > >
>>> > > > Test for odd/even is 2|nreturning 1 for odd and 0 for even  1 0=2|n
>>> > will
>>> > > > return 1 0 for odd and 0 1 for even
>>> > > > The (3*1+n) and n%2 terms are a two element result vector
>>> > > >
>>> > > > if odd, 1 0 # returns the odd result and if even 0 1 #returns the
>>> even
>>> > > > result.
>>> > > >
>>> > > > In this case I started with  the basic (3*n+1),n%2vector and then
>>>  used
>>> > > > 1 0= 2|n  times this(residue is 1 for odd and 0 for even numbers)
>>> > > > the result is(1 0=2|y) # (3*1+y),y%2which works
>>> > > > I wrote this as an explicit verb s=: 13 : '(1 0=2|y)#(3*1+y),y%2'
>>> > > > and typed sto get a tacit form (1 0 = 2 | ]) # (3 * 1 + ]) , 2 %~ ]
>>> > > > generated by J
>>> > > >
>>> > > >   attached collatz=:to the front and that was it.
>>> > > >
>>> > > > note that the y is replaced by ] and the y%2 is expressed using 2%~]
>>> J
>>> > > > wants the ] on the right of this operation and ~does this
>>> > > > There are other variations on this but this is the simplest I came up
>>> > > with.
>>> > > >
>>> > > > I classify myself as a beginner but I have an APL background and long
>>> > > > ago found C and relatives awkward I do think it is harder to come
>>> from
>>> > > > C/C++/Java to J  than from APL to J - the thinking is different To me
>>> > > > C++ is oriented towards detailed instructions for the compiler (much
>>> of
>>> > > > this is done by the  interpreter in  J or APL) The problem comes
>>> first
>>> > > > in J and more times than not - use of arrays can eliminate a lot of
>>> > if's
>>> > > > and loops.
>>> > > >
>>> > > >
>>> > > > Don Kelly
>>> > > >
>>> > > >
>>> > > > On 03/03/2014 8:30 AM, Jon Hough wrote:
>>> > > > > Beginner question again.I quick task I set myself was to write ONE
>>> > > ITERATION of the Collatz function for a given positive integer.
>>> > > http://en.wikipedia.org/wiki/Collatz_conjecture
>>> > > > >
>>> > > > > So my verb is supposed to do 3*n+1 if n is odd and n/2 if n is
>>> > even.In
>>> > > a more imperative/OOE based language (C/C++/Java) I could write this in
>>> > > less than a minute. Unfortunately, I fell at the very first hurdle in
>>> J.
>>> > > > > I originally wrote my tacit verb for even ints:collatz_even
>>> =.2&(%~)
>>> > > > > collatz_even 4
>>> > > > > 2
>>> > > > > This works, but I had a terrible time trying to put the brackets in
>>> > > the right place. I am not sure why %~ needs to be bracketed. Won't J
>>> > parse
>>> > > %~ as dyadic and "know" that the left operand is 2?
>>> > > > > Next I tried to do the case for odd n:
>>> > > > > collatz_odd =. 1&+@(3&*)   collatz_odd 3
>>> > > > > 10
>>> > > > > That seems to work ok.Now I am not sure how to do an if statement
>>> in
>>> > > J. In plain English I want "If n is even do collatz_even else do
>>> > > collatz_odd".The verb I wrote to test for even-ness is
>>> > > > > ones =. {:@#: NB. Finds the ones column values. 1 => odd, 0=> even
>>> > > > > 1 = ones 2
>>> > > > > 0
>>> > > > > So I have a test but I am not sure how to utilize this test. How
>>> > > should I go about doing:"If n is even do collatz_even else do
>>> > collatz_odd"?
>>> > > > > Thanks and regards,Jon
>>> > > > >
>>> > > > >
>>> > ----------------------------------------------------------------------
>>> > > > > For information about J forums seehttp://
>>> > www.jsoftware.com/forums.htm
>>> > > > >
>>> > > >
>>> > > >
>>> ----------------------------------------------------------------------
>>> > > > For information about J forums see
>>> http://www.jsoftware.com/forums.htm
>>> > >
>>> > > ----------------------------------------------------------------------
>>> > > For information about J forums see http://www.jsoftware.com/forums.htm
>>> > >
>>> > ----------------------------------------------------------------------
>>> > For information about J forums see http://www.jsoftware.com/forums.htm
>>> >
>>>
>>>
>>>
>>> --
>>> Devon McCormick, CFA
>
>
>>
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>
>>----------------------------------------------------------------------
>>For information about J forums see http://www.jsoftware.com/forums.htm
>>
>>
>----------------------------------------------------------------------
>For information about J forums see http://www.jsoftware.com/forums.htm
>----------------------------------------------------------------------
>For information about J forums see http://www.jsoftware.com/forums.htm
>
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to