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

Reply via email to