or

powerB =: 1 : 0
:
for_i. |. x do. y =. i u y end.
y
)

Untested.

Henry Rich

On 10/3/2013 7:33 AM, Pascal Jasmin wrote:
Thank you Brian and Dan,

I present a new verb powerupdate (pow) to help with boxscan:

pow =: 1 : (':'; 'u boxscan (<"_1 x), < y')
pow2=: boxscan(@:(<"_1@:[ , <@:]))  NB. tacit version is slower, but allows 
jibberish interactions with \ et al.
boxscan =: &.>/(>@:)               NB. interacts with \ meaningfully.

pow is a rewrite of this, which may be clearer:

powerA =: 1 : 0
:
c =. y
while. 0<#x do. c =. ({: x)  u c
x =. }: x end.
c
)

pow helps rearrange the x and y terms for use with boxscan so that it can be 
used more naturally to update 'y'

    1 2 3 + pow 0 10
6 16

    1 2 3 4 + pow 1 2 3 + pow 0 10

16 26

    1 2 3 + pow 0 10 is equivalent to:


1 + 2 + 3 + 0 10

On another note, I think my original boxitems has some use:

boxitems =: (<"0)`(<"1)@.(1<#@$)

though the following is writtable using both versions

boxAsRows =: <"_1 L:1 ^:(1 >. <:@#@$)


boxAsRows 2 2 2 $ (;~"0  i.8)
┌─────────────────────────────┬─────────────────────────────┐
│┌─────────────┬─────────────┐│┌─────────────┬─────────────┐│
││┌─────┬─────┐│┌─────┬─────┐│││┌─────┬─────┐│┌─────┬─────┐││
│││┌─┬─┐│┌─┬─┐│││┌─┬─┐│┌─┬─┐│││││┌─┬─┐│┌─┬─┐│││┌─┬─┐│┌─┬─┐│││
││││0│0│││1│1│││││2│2│││3│3│││││││4│4│││5│5│││││6│6│││7│7││││
│││└─┴─┘│└─┴─┘│││└─┴─┘│└─┴─┘│││││└─┴─┘│└─┴─┘│││└─┴─┘│└─┴─┘│││
││└─────┴─────┘│└─────┴─────┘│││└─────┴─────┘│└─────┴─────┘││
│└─────────────┴─────────────┘│└─────────────┴─────────────┘│
└─────────────────────────────┴─────────────────────────────┘

which seems to fit how I like to consume data more than:

    <"_1 ] 2 2 2 $ (;~"0  i.8)
┌─────┬─────┐
│┌─┬─┐│┌─┬─┐│
││0│0│││4│4││
│├─┼─┤│├─┼─┤│
││1│1│││5│5││
│└─┴─┘│└─┴─┘│
│     │     │
│┌─┬─┐│┌─┬─┐│
││2│2│││6│6││
│├─┼─┤│├─┼─┤│
││3│3│││7│7││
│└─┴─┘│└─┴─┘│
└─────┴─────┘




----- Original Message -----
From: Dan Bron <[email protected]>
To: [email protected]
Cc:
Sent: Wednesday, October 2, 2013 6:12:55 PM
Subject: Re: [Jprogramming] How to box every item

Pascal Jasmin wrote:
If I do not know the shape of items in advance,
how would I box each item?

Solution:

        boxItems =: < items

        boxItems (;~"0 i.5)

     +-----+-----+-----+-----+-----+
     |+-+-+|+-+-+|+-+-+|+-+-+|+-+-+|
     ||0|0|||1|1|||2|2|||3|3|||4|4||
     |+-+-+|+-+-+|+-+-+|+-+-+|+-+-+|
     +-----+-----+-----+-----+-----+

The utility "items" is defined in the standard library. You could satisfy your 
curiosity by just checking out its definition. But can you figure out what it is without 
peeking?  Hint: it's very simple; in fact, it is defined in only two words.

Bigger hint: http://www.jsoftware.com/jwiki/Essays/A%20Fine%20Line

-Dan


----------------------------------------------------------------------
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