Thanks. Appreciate the improvements too.

For non-scalar x, I think we'd have to mess with transposes, which is doable, 
though overkill for my current purposes. 

-Dan

> On May 30, 2014, at 7:04 PM, Raul Miller <[email protected]> wrote:
> 
> That looks right.
> 
> Note that (((] | + + i.@]) #) { ]) can be replaced with (((] | [ + i.@]) #)
> { ]) or, even ((] | (+ i.)) #) { ]
> 
> Note also that behavior will be different from |. when x is not a scalar.
> 
> Thanks,
> 
> -- 
> Raul
> 
> 
> 
>> On Fri, May 30, 2014 at 6:42 PM, Dan Bron <[email protected]> wrote:
>> 
>> While trying to implement the Nautical Bell task on RosettaCode [1], I
>> needed an arithmetic way to express a rotation. The short story is clocks
>> on ships are origin-1, whereas modern clocks are origin zero (midnight is
>> 00:00:00.000).
>> 
>> Now, if I had a list of all timestamps, the index change is simple: _1 |.
>> list_of_timestamps .  The problem is, I'm given timestamps as scalars
>> (i.e. individual points in time), so I don't have a list. All I have is a
>> timestamp and a maximum (which corresponds to the length of the list).
>> 
>> Anyway, you can see the solution I cobbled together on the page, but what
>> I'm interested in is a general way to express rotations arithmetically
>> (i.e. as operations on indices).  Is it true that after a rotation of R
>> places, the indices i of a list of length L will be given by L | (L+R) + i
>> ?
>> 
>> Or, modelled in J:
>> 
>>           rotate =: ((] | + + i.@]) #) { ]
>> 
>>           _1 rotate i. 10
>>        9 0 1 2 3 4 5 6 7 8
>> 
>>           _1 rotate 'hello world!'
>>        !hello world
>> 
>>           2 rotate 'abcdefg'
>>        cdefgab
>> 
>>           (rotate"0 _~ i.@#) 'abcdefg'
>>        abcdefg
>>        bcdefga
>>        cdefgab
>>        defgabc
>>        efgabcd
>>        fgabcde
>>        gabcdef
>> 
>> Can I rely on this identity for future work? Is there any scalar x and list
>> y where  x rotate y  will differ from   x |. y  ?
>> 
>> -Dan
>> 
>> [1] Nautical Bell task on RosettaCode
>>    http://rosettacode.org/wiki/Nautical_bell#J
>> ----------------------------------------------------------------------
>> 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