[Jprogramming] Cut

Raul Miller rauldmiller at gmail.com
Tue Jul 6 15:20:23 UTC 2021


Here's a faster implementation of that approach:

   (#~ >:&1e5)I.+./"1*/2 =/\_1 0 1|.!.' '"0 1/":,.i.1e6

(Though it's still slower than Jacobs' constructive approach.)

Thanks,

-- 
Raul

On Tue, Jul 6, 2021 at 6:38 AM R.E. Boss <r.e.boss at outlook.com> wrote:
>
> Answer is correct, performance is poor, actually, the poorest:
>
>    n=.1e5 to 999999
>    n
> 100000 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 100011 ...
>
>       $((1 e."1 [:{.@$@~."1 (1)|: 2}."1 (_2)}."1 (1 0 2)|: (0 1 2)|."0 1/ '  ',"1 ":"0@]) #]) n
> 33219
>    ts'((1 e."1 [:{.@$@~."1 (1)|: 2}."1 (_2)}."1 (1 0 2)|: (0 1 2)|."0 1/ ''  '',"1 ":"0@]) #]) n'
> 0.8453641 67116000
>
> Compare to performances in http://jsoftware.com/pipermail/programming/2021-July/058348.html  and below.
>
>
> R.E. Boss
>
>
> -----Original Message-----
> From: Programming <programming-bounces at forums.jsoftware.com> On Behalf Of Arthur Anger
> Sent: dinsdag 6 juli 2021 06:44
> To: programming at jsoftware.com
> Subject: Re: [Jprogramming] Cut
>
> Skip et al.--
> I have not closely followed all the various replies to the triple-digit challenge, but I haven't recognized any really direct approach to the solution.  Mine consists of:
> --Format each number as a row of characters --Shift (not rotate) each row twice relative to itself --Drop the two columns of partial overlap at each end --Take the Nub of each 3-element column so generated --Find each group containing a nub of size 1 --Select the corresponding original numbers
>
> It took me a few days to co-ordinate all the proper operations, ranks, and transposes.  Here's the test:
>
>    vals=. 123334 122344 121212 111222 112122 555432
>    ((1 e."1 [:{.@$@~."1 (1)|: 2}."1 (_2)}."1 (1 0 2)|: (0 1 2)|."0 1/ '  ',"1 ":"0@]) #]) vals
> 123334 111222 555432
> --Art
>
> On Sat, 3 Jul 2021 18:13:15 -0500, Skip Cave <skip at caveconsulting.com> wrote:
> Can I use cut to find all the 6-digit integers that have three consecutive identical digits? Or is there a more efficient way?
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm


More information about the Programming mailing list