NB. colon separates monad and dyad sections
I did not know that, thanks.
Your solution is great. I'll have to spend a little time figuring
out what's
going on, but I can't find any flaws yet. And much more J-like than
mine.
Regards,
Jon
--------------------------------------------
On Tue, 9/27/16, 'Mike Day' via Programming
<[email protected]> wrote:
Subject: Re: [Jprogramming] Zig Zag problem
To: [email protected]
Date: Tuesday, September 27, 2016, 10:38 PM
Yes, our messages
crossed.
I'm lazy with
verb definitions, nearly always using 3 : 0 even
for a dyad. I could have written
cv =: 3 : 0
3
cv y NB. monad section: supply a default larg
for monad use
: NB. colon
separates monad and dyad sections
[dyad
section]
)
then 3 would be the default left arg if used as
a monad.
As it is, attempting to use it as
a monad will result in a
domain error.
In my example tableau for
depth 5, I should have pointed out
that the
differences between columns are alternately 8 6 4 2 0 and 0
2 4 6 8
Any clearer?
Mike
On
27/09/2016 14:22, 'Jon Hough' via Programming
wrote:
> Sorry, I gave the correct verb
in my second mail.
>
>
Thanks for your solution. I'm not really sure I
understand what cv is...
> Is it a monad
(i.e. 3 : 0)? It has a reference to the x argument, so it
seems to be a dyad.
> Also, what is the
purpose of the colon on the first line of cv?
>
> Thanks,
> Jon
>
--------------------------------------------
> On Tue, 9/27/16, 'Mike Day' via
Programming <[email protected]>
wrote:
>
> Subject: Re: [Jprogramming]
Zig Zag problem
> To: [email protected]
> Date: Tuesday, September 27,
2016, 10:12 PM
>
> rmo's definition?
>
> Anyway, here's an
approach
> which works on
the indices.
> Please note
that
> I haven't tested
it thoroughly for boundary problems.
>
> I just consider the rising
> diagonals as extra columns.
Top & bottom
> indices
will be reduplicated, but can be
> removed with nub.
>
> eg for
> LHA = 5, we get this index
array:
> 0 8
> (8)
> 1 7 9
> 2
> 6 10
> 3 5 11 ..
> 4 (4)
> 12 (12)
>
> It actually works
> on the transpose first.
>
> cv
> =: 3 : 0
> :
> n =. x
> difs =. (,:~|.) +:@i. n
<.l =. #y
> start=.
i.n<.l
> nstep=. (0
> >. l-n) >.@% n-1
> y{~ l-.~
> ~.l<.,|:+/\start,nstep$difs
> )
>
>
3 4 5 cv each/
> '';'paypa';1
2 3
> 4;'paypalishiring'
> ++-----+-------+--------------+
> ||paapy|1 2 4
3|pahnaplsiigyir|
> ++-----+-------+--------------+
> ||payap|1 2 3
4|pinalsigyahrpi|
> ++-----+-------+--------------+
> ||paypa|1 2 3
4|phasiyirpligan|
> ++-----+-------+--------------+
>
> Any use?
> Mike
>
>
> On 27/09/2016 13:02, 'Jon
Hough' via
> Programming
wrote:
> > This is a
> programming challenge from
here: https://leetcode.com/problems/zigzag-conversion/
> > The challenge is to
convert a string into
> a
"zig zag" formation with the given number of
> rows.
> >
> > e.g. (from
> the link)
> > PAYPALISHIRING is
transformed
> into
PAHNAPLSIIGYIR (the link explains clearly this
> transformation)
> >
> >
> This is my solution, which
works.
> >
> >
> > NB. Convert text into
> a zigzag text.
> > NB. x: number of row
> (positive integer)
> > NB. y: string
> text
> > convert =: 4 : 0
> > rows =. x
> > text =.
> y
> > len =. # y
> > if. 0
> = len do. ''
> > elseif. 1 = len
> do. text
> > elseif. 1 = rows do.
text
> > elseif. 1 do.
> > k=.
> 0
> > l=. 0
> > res =.
> ''
> > NB. loop through the
rows
> > while. (k <
rows) *. k < len do.
> > res =. res, k{text
> >
> NB. how much to increment.
first and last rows are
> special
> > NB. cases, inner rows
switch
> the increment.
> > nextMax =. (2 * rows)
-
> 2
> > rm1 =. rows - 1
> >
> l1 =.
> ((+:@:(rm1&-))`(nextMax&[)@.((rmo&=)+.(0&=)))
> k
> > l2 =.
> ((+:)`(nextMax&[)@.((rm1&=)+.(0&=)))k
> > NB. first incremented
value
> > nextIndex =. k
+ l1
> >
> NB. flag indicates which
increment to use.
> >
flag =. 1
> > while.
> nextIndex < len do.
> > res =. res,
> nextIndex{text
> > flag =. (flag = 0)
> > if. flag do. nextIndex
=. nextIndex +
> l1
> > else. nextIndex =.
nextIndex + l2
> >
end.
> > end.
> > k =. k + 1 NB. increment
the row
> > end.
> > res
> > end.
> >
> > )
> >
> > 3 convert
'PAYPALISHIRING'
> >
> > It's an
> interesting challenge and
I'm sure there is a much nicer
> way to do this in J...
> >
> > Regards,
> > Jon
> >
>
----------------------------------------------------------------------
> > 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
----------------------------------------------------------------------
For information about J forums see
http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm