Another way is to use prefix to eliminate the upper triangular.

  ({:(=>.)@%])\>:i.10
1 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0
1 1 0 1 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0
1 1 1 0 0 1 0 0 0 0
1 0 0 0 0 0 1 0 0 0
1 1 0 1 0 0 0 1 0 0
1 0 1 0 0 0 0 0 1 0
1 1 0 0 1 0 0 0 0 1

Still have the overhead of having to pad the short rows with zeros but if other processing is to be done simply do it in the tacit expression before returning.

  ([:<]#~{:(=>.)@%])\>:i.10
+-+---+---+-----+---+-------+---+-------+-----+--------+
|1|1 2|1 3|1 2 4|1 5|1 2 3 6|1 7|1 2 4 8|1 3 9|1 2 5 10|
+-+---+---+-----+---+-------+---+-------+-----+--------+

Oleg Kobchenko wrote:

  +/+/@((=<.)@% >:@i.)"0 >:i.10
27


----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to