I think I'd do it like this:
   ;(([ * 2^2=])&.>/\~&2,{:@])^:(*@#) ;/ 1 2 3 2 2 4 2 1

Technically the leftmost [ is unnecessary, but I left it in for emphasis.

Thanks,

-- 
Raul

On Mon, May 12, 2014 at 1:11 PM, 'Pascal Jasmin' via Programming
<[email protected]> wrote:
> I'm looking for this answer, but a better way to do it.
>
>   > ({~"1 0 [: i.#) (<@:+:@>)^:(1 |. 2= ] &>)  ;/ 1 2 3 2 2 4 2 1
> 2 2 6 4 2 8 2 1
>
> the right hand side must be boxed.  Unboxing at end, just there for display.  
> Should not assume that it is possible for input.
>
> What the above is doing is if/for a cell that is equal to 2, double the 
> previous cell.
>
> To get it to work, I've had to generate a full n x n table, and then take the 
> diagonal.  Is there a better tacit way that avoids n x n table?
> ----------------------------------------------------------------------
> 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