Raul, Your function doesn't seem to dissect.  Here's what happens.

require 'debug/dissect'
   dissect   ',`([ , 0 1})@.(0<[)/@:(* +/\) 0 1 0 0 0 0 0 0 1 0 0'
       
   f=: (3##\@])`(,@])`[} 0 1 2 +/~I.
   f A
0 1 1 1 0 0 0 0 2 2 2
   f
(3 # #\@])`(,@])`[} (0 1 2 +/~ I.)
   (3 # #\@])`(,@])`[} (0 1 2 +/~ I.)0 1 0 0 0 0 1 0 0
|length error: scriptd
|       (3##\@])`(,@])`[}(0 1 2+/~I.)0 1 0 0 0 0 1 0 0
|[-6] c:\users\linda\j64-803-user\temp\67.ijs
   
Linda

-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Raul Miller
Sent: Tuesday, January 27, 2015 11:46 PM
To: Programming forum
Subject: Re: [Jprogramming] scan replace

I guess this is how I'd write that:

   f=: (3##\@])`(,@])`[} 0 1 2 +/~I.

Is that easy enough to read, or should I spell out how it works?

Thanks,

--
Raul

On Tue, Jan 27, 2015 at 10:42 PM, Joe Bogner <[email protected]> wrote:
> I'm looking for some help to write a verb to find 1s and replace it 
> and the next two numbers with an incrementing sequence.
>
>
> 0 1 1 1 0 0 0 0 2 2 2 -: f 0 1 0 0 0 0 0 0 1 0 0
>
> I tried variations of scan[1] and the recent thread on Forward Fill[2] 
> seems to apply
>
> I don't understand either well enough to apply it.
>
> I should be able to do something like this:
>
> 1. Reverse |. 0 1 0 0 0 0 0 0 1 0 0
>
> 0 0 1 0 0 0 0 0 0 1 0
>
> 2. Scan
>
> 0
> 0 0
> 0 0 1 -> replace last 3 with 1+ the largest number found,  1 1 1
> 1 1 1 0
> 1 1 1 0 0
> 1 1 1 0 0 0
> 1 1 1 0 0 0 0
> 1 1 1 0 0 0 0 0
> 1 1 1 0 0 0 0 0 0
> 1 1 1 0 0 0 0 0 0 1 -> replace last 3 with 1 + the largest number 
> found 2 2 2
> 1 1 1 0 0 0 0 2 2 2
> 1 1 1 0 0 0 0 2 2 2 0
>
> Assuming this is a reasonable way to tackle it, what would the correct 
> scan be and would you use ^: to match the last value of the scan and 
> replace the prior three values with the >./ of the list?
>
> 3. Reverse |. 1 1 1 0 0 0 0 2 2 2 0
>
> 0 2 2 2 0 0 0 0 1 1 1
>
>
> This isn't exactly what I'm looking for since I scanned in reverse. I 
> would be happy with this or even happier with the desired 0 1 1 1 0 0
> 0 0 2 2 2
>
> Thanks
>
>
> [1] - http://www.jsoftware.com/jwiki/OlegKobchenko/Ways%20to%20Scan
> [2] - 
> http://jsoftware.com/pipermail/programming/2015-January/040706.html
> ----------------------------------------------------------------------
> 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