Turning it around is easier to read, and shorter;)

   h=: ($-.1:)$,
   $ h 3 1 4 1 5 9 $ 'abc'
3 4 5 9

greg
~krsnadas.org

--

from: Linda Alvord <[email protected]>
to: [email protected]
date: 8 May 2014 01:58
subject: Re: [Jprogramming] Remove 1s from shapes

I was just practicing "going backwards" this morning and look what I got!

 f=: (A=:$ -. 1:) ($,) ]
 g=: 13 :'(($y)-. 1:y)$,y '

 f
($ -. 1:) ($ ,) ]
 g
, $~ $ -. 1:

Linda

--

from: Roger Hui <[email protected]>
to: Programming forum <[email protected]>
date: 5 March 2014 07:17
subject: Re: [Jprogramming] Remove 1s from shapes

My guess is that this sort of thing is too rare to justify special code.

 name =: (some noun)
 name =: (new shape) ($,) name

--

On Wed, Mar 5, 2014 at 5:43 AM, Dan Bron <[email protected]> wrote:

Roger wrote:
x($,)y does make a copy of the values of y

>True, though I'd say this is implied in every statement about performance in 
>J, or special code that speeds it up (with a few specific, documented, and 
>well-known exceptions).

Hmm, maybe it's worth making a new exception?

name =: (some noun)
name =: (new shape) ($,) name

-Dan

--

Subject: Re: [Jprogramming] Remove 1s from shapes
From: Roger Hui <[email protected]>
Date: Tue, 4 Mar 2014 15:45:37 -0800
To: Programming forum <[email protected]>

>x($,)y does make a copy of the values of y, as the following session 
>illustrates:

7!:0 ''
2107136
x=: 3 1 4 1 5 9 265358 $ 0.2
7!:0 ''
2149590784
t=: x
7!:0 ''
2149590912

NB. i.e. did not make a copy to make t

x1=: (($-.1:) ($,) ]) x
7!:0 ''
4297074688

NB. i.e. made a copy to make x1

Or this:

timer=: 6!:2
timer 'x1=: (($-.1:) ($,) ]) x'
0.574603

If it did not make a copy it wouldn't have taken so much time to make x1.

--

On Tue, Mar 4, 2014 at 3:10 PM, Dan Bron <[email protected]> wrote:

>What Roger so humbly neglected to brag about is the hook ($,) is supported by 
>special code.

>In effect, the verb he provided will be instantaneous: ($,) simply updates the 
>tiny piece of memory holding the array's shape with the new shape.

The value part of the array won't be touched, or even looked at.

-Dan

--

On Mar 4, 2014, at 4:59 PM, Brian Schott <[email protected]>
wrote:

That's funny. I almost said what you did. Thanks.

--

On Tue, Mar 4, 2014 at 4:44 PM, Roger Hui <[email protected]>
wrote:

f=: ($ -. 1:) ($,) ]
$ f 3 1 4 1 5 9 $ 'abc'
3 4 5 9

--

On Tue, Mar 4, 2014 at 1:38 PM, Brian Schott <[email protected]>
wrote:

>Is there a general verb that can reshape any noun with 1s in its shape so that 
>the axes with 1s disappear? I know that most often changing calculations 
>slightly can eliminate the 1s before they arise, but not always.

>For example if $a == 4 1 4 3, is there a verb that will make generalize the 
>result like how ,"_2]1|: does in this case?

$,"_2]1|:a == 4 4 3
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to