If the zeroes here were 32 (i.e. a. i. ' '):
   (*=@/:) (a.&i.) 'abcdef'
97  0  0   0   0   0
 0 98  0   0   0   0
 0  0 99   0   0   0
 0  0  0 100   0   0
 0  0  0   0 101   0
 0  0  0   0   0 102

then this would do it:
   (*=@/:)&.(a.&i.) 'abcdef'

So you could do this:
   (+32*0&=)@(*=@/:)&.(a.&i.) 'abcdef'
a
 b
  c
   d
    e
     f
On Sun, Apr 26, 2009 at 1:16 PM, R.E. Boss <[email protected]> wrote:
> diamond=: r&.|:@ (r=.],}.@|.)@: (|."1)@ diag
>
>    ({~ diam...@#) '*abcdef'
> *****a*****
> ****b*b****
> ***c***c***
> **d*****d**
> *e*******e*
> f*********f
> *e*******e*
> **d*****d**
> ***c***c***
> ****b*b****
> *****a*****
>
>
> R.E. Boss
>
>
>> -----Oorspronkelijk bericht-----
>> Van: [email protected] [mailto:programming-
>> [email protected]] Namens R.E. Boss
>> Verzonden: vrijdag 24 april 2009 19:26
>> Aan: 'Programming forum'
>> Onderwerp: Re: [Jprogramming] diagonal arrays
>>
>> With
>>
>>    diag 7
>> 1 0 0 0 0 0
>> 0 2 0 0 0 0
>> 0 0 3 0 0 0
>> 0 0 0 4 0 0
>> 0 0 0 0 5 0
>> 0 0 0 0 0 6
>>
>> one could have a fill = first item, also in the upper triangle:
>>
>>    ({~ d...@#) '*abcdef'
>> a*****
>> *b****
>> **c***
>> ***d**
>> ****e*
>> *****f
>>
>> diag=: {.~&....@}.@i.
>>
>>
>> R.E. Boss
>>
>>
>> > -----Oorspronkelijk bericht-----
>> > Van: [email protected] [mailto:programming-
>> > [email protected]] Namens Gilles Kirouac
>> > Verzonden: donderdag 23 april 2009 17:43
>> > Aan: Programming forum
>> > Onderwerp: Re: [Jprogramming] diagonal arrays
>> >
>> >
>> >   I just read this thread of last October.
>> >
>> >   The following phrase based on Take is type independent, accepts
>> > duplicates and fill elements. It does not "manipulate" data with
>> > * or /: or move it around with $ . It also handles an empty argument.
>> > Concise enough? a matter of compromise.
>> >
>> >    diagonal =: ( {."_1~ -@:>:@:i.@:# )
>> >
>> >    diagonal  99 1x1 0 _1j1 99
>> > 99       0 0    0  0
>> >  0 2.71828 0    0  0
>> >  0       0 0    0  0
>> >  0       0 0 _1j1  0
>> >  0       0 0    0 99
>> >
>> >    <diagonal 'a b c d '  NB. suitable for text-diamond 2009/04/17
>> > +--------+
>> > |a       |
>> > |        |
>> > |  b     |
>> > |        |
>> > |    c   |
>> > |        |
>> > |      d |
>> > |        |
>> > +--------+
>> >
>> >    diagonal (<s: ' tra'),<"0] 99 1x1 0 _1j1 99
>> > +----+--+-------+-+----+--+
>> > |`tra|  |       | |    |  |
>> > +----+--+-------+-+----+--+
>> > |    |99|       | |    |  |
>> > +----+--+-------+-+----+--+
>> > |    |  |2.71828| |    |  |
>> > +----+--+-------+-+----+--+
>> > |    |  |       |0|    |  |
>> > +----+--+-------+-+----+--+
>> > |    |  |       | |_1j1|  |
>> > +----+--+-------+-+----+--+
>> > |    |  |       | |    |99|
>> > +----+--+-------+-+----+--+
>> >
>> >    diagonal a:,3#<+`-
>> > ++-----+-----+-----+
>> > ||     |     |     |
>> > ++-----+-----+-----+
>> > ||+-+-+|     |     |
>> > |||+|-||     |     |
>> > ||+-+-+|     |     |
>> > ++-----+-----+-----+
>> > ||     |+-+-+|     |
>> > ||     ||+|-||     |
>> > ||     |+-+-+|     |
>> > ++-----+-----+-----+
>> > ||     |     |+-+-+|
>> > ||     |     ||+|-||
>> > ||     |     |+-+-+|
>> > ++-----+-----+-----+
>> >
>> >    $diagonal ''
>> > 0 0
>> >
>> >   The lower triangle can be filled with a constant fill atom
>> > (type dependent):
>> >
>> >    ( {.!.'.'"_1~ -@:>:@:i.@:# )'abcdef'
>> > a
>> > .b
>> > ..c
>> > ...d
>> > ....e
>> > .....f
>> >    or with a variable fill atom (but not tacitly in this form I think):
>> >    '*'( 4 : '(->:i.# y) {.!.x "_1 y' ) 'abcdef'
>> > a
>> > *b
>> > **c
>> > ***d
>> > ****e
>> > *****f
>> >
>> >  ~ Gilles
>> >
>> > ---------- Original Message -----------
>> > From: "Raul Miller" <[email protected]>
>> > To: "Programming forum" <[email protected]>
>> > Sent: Sat, 11 Oct 2008 14:40:18 -0400
>> > Subject: [Jprogramming] diagonal arrays
>> >
>> > > Given a vector, put it on the diagonal of an array:
>> > >
>> > >    (<0 1)&|:inv 2 7 9 20
>> > > |index error
>> > >    (+/ .*(e.(<0 1 2 )&|:)@i.@(3##)) 2 7 9 20
>> > > 2 0 0  0
>> > > 0 7 0  0
>> > > 0 0 9  0
>> > > 0 0 0 20
>> > >    (, $~ 2##)@(,"0 1*&0)2 7 9 20
>> > > 2 0 0  0
>> > > 0 7 0  0
>> > > 0 0 9  0
>> > > 0 0 0 20
>> > >
>> > > Are there more concise approaches, that work?
>> > >
>> > > Thanks,
>> > >
>> > > --
>> > > Raul
>> > > ----------------------------------------------------------------------
>> > > For information about J forums see http://www.jsoftware.com/forums.htm
>> > ------- End of Original Message -------
>> >
>> > ----------------------------------------------------------------------
>> > 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
>



-- 
http://www.ixquick.com/

Ixquick Protects Your Privacy!
The only search engine that does not record your IP address.

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

Reply via email to