That blew up for me, and I did not feel motivated to dump my existing
j session, so I rewrote it a bit:

NB. dyads
   e=:  (1 + {:@[ < ]) {. [ ; ,
   h=:  [: ; e&.>

NB. monads
   g=: (}.@] ;~ {.@] ; (h {.))&>/
   c=: ({::~ [: (i. >./) #@>)@>@{.
   d=: (<_) ; ]
   f=: ([: c g^:(#@(>@{:)))@d

I don't think this is much faster. But it seems to still work.

Those sub-expressions could use better names.

Thanks,

-- 
Raul

On Fri, Sep 2, 2016 at 2:06 PM, Xiao-Yong Jin <[email protected]> wrote:
> Came up with this:
>
>    f=.u@d
>    u=.[: c g^:(#@n)
>    d=.(<_) ; ]
>    c=.[: > s {~ [: {.@\: #@>@s
>    g=.}.@n ;~ {.@n ; s h {.@n
>    n=.>@{:
>    s=.>&{.
>    h=.[: ; e&.>
>    e=.<@[`([ ; [ , ])@.t
>    t=.{:@[ < ]
>    f 7 4 4 5 2 7 1 8 13 2 10 4 9 1 4 5 5 4 3 10 3 4 5 8 15 7 11 19
> 1 2 3 4 5 7 11 19
>
> Let me know if you can optimize it.
>
>> On Sep 2, 2016, at 11:30 AM, Raul Miller <[email protected]> wrote:
>>
>> It seems to me that the "efficient algorithm" documented on the
>> wikipedia page would have an analogous flaw. It is performing binary
>> searches on unsorted lists. That said, it does perform correctly for
>> this example.
>>
>> Thanks,
>>
>> --
>> Raul
>>
>>
>>
>> On Fri, Sep 2, 2016 at 12:18 PM, jonghough via Programming
>> <[email protected]> wrote:
>>>
>>>
>>> Yes, Raul is absolutely correct. And the flaw (in my solution, at least) is 
>>> obvious now. I'll try for a correct solution again tomorrow.
>>>
>>>
>>>
>>>
>>> From: 'Mike Day' via Programming
>>>
>>> Sent: Saturday, September 3, 00:26
>>>
>>> Subject: Re: [Jprogramming] Greatest Increasing Subsequence
>>>
>>> To: 'Mike Day' via Programming
>>>
>>>
>>>
>>> Same problem with my version, which was faster but equally wrong! Mike On 
>>> 02/09/2016 14:57, Raul Miller wrote: > Actually, if we try your approach on 
>>> -8 2 4 3 1 6 we get _8 _2 _1 > instead of _8 _4 _3 _1. > > Here's a brute 
>>> force O(2^n) approach that I hacked up earlier - it > obviously only works 
>>> on short lists: > > increasing=: (-: /:~)@#~"1 #:@i.@^~&2@# > longestinc=: 
>>> ] #~ [: (#~ ([: (= >./) +/"1)) #:@I.@increasing > > We can do better, of 
>>> course, but I have some other things I want to > deal with, first. > > 
>>> Thanks, > --- This email has been checked for viruses by Avast antivirus 
>>> software. https://www.avast.com/antivirus 
>>> ---------------------------------------------------------------------- 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

Reply via email to