Smart.
So the JMT-solution is the winner.

R.E. Boss


-----Original Message-----
From: Programming <[email protected]> On Behalf Of 
'robert therriault' via Programming
Sent: zondag 4 juli 2021 16:00
To: [email protected]
Subject: Re: [Jprogramming] Cut

If the result can be returned in literal format then there is no need to 
expand/collapse the digits which results in a skinnier and faster literal 
version 
  
   100 timespacex '~.,10#.(1+2*=i.4)#"1/10#.inv 1e3+i.9e3'  NB. Miller's golfed 
version of Jacobs
0.00220303 3.15389e6
   $ ~.,10#.(1+2*=i.4)#"1/10#.inv 1e3+i.9e3
33219
   100 timespacex '~. ,/ (1+2*=i.4)#"1/":,. 1e3+i.9e3'  NB. Therriault's 
literal version
0.00109978 658912
   $ ~. ,/ (1+2*=i.4)#"1/":,. 1e3+i.9e3
33219 6

Cheers, bob

> On Jul 4, 2021, at 06:09, Raul Miller <[email protected]> wrote:
> 
> Jacobs' approach could also survive a bit of golf:
> 
>   $~.,10#.(1+2*=i.4)#"1/10#.inv 1e3+i.9e3
> 33219
> 
> Thanks,
> 
> --
> Raul
> 
> 
> On Sun, Jul 4, 2021 at 6:09 AM R.E. Boss <[email protected]> wrote:
>> 
>>   ts 'ssd3 0'                  NB. Jacobs
>> 0.0049295 4718752
>>   $ ssd3 0
>> 33219
>> 
>>   ts '1e5+I.+./(3#"1":i.10 1) +./@E."1/  ":1e5+i.9e5 1'        NB. Miller
>> 0.3565249 58725056
>>  $ 1e5+I.+./(3#"1":i.10 1) +./@E."1/  ":1e5+i.9e5 1
>> 33219
>> 
>>   ts 'sn #~ 1 e."(1) 3 #@~.\"1] sn'            NB. Boss
>> 0.5836545 34605056
>>   $ sn #~ 1 e."(1) 3 #@~.\"1] sn
>> 33219 6
>> 
>>   ts '$(#~ triple"1) sn'                       NB. Fondren
>> 0.7807501 3147712
>>   $ (#~ triple"1) sn
>> 33219 6
>> 
>> Jacobs' solution is by far the fastest, almost 200 times the solution of 
>> Fondren, which is the thinnest.
>> No need for D
>> Nice to see the different approaches.
>> 
>> 
>> R.E. Boss
>> 
>> 
>> -----Original Message-----
>> From: Programming <[email protected]> On 
>> Behalf Of 'Mike Day' via Programming
>> Sent: zondag 4 juli 2021 10:50
>> To: [email protected]
>> Subject: Re: [Jprogramming] Cut
>> 
>> ... prepend ...,  thanks to iPad spell correction!
>> M
>> 
>> Sent from my iPad
>> 
>>> On 4 Jul 2021, at 09:24, Mike Day <[email protected]> wrote:
>>> 
>>> That’s what I was thinking too,  or even take all 3-digit numbers & insert, 
>>> pretend, append triples...
>>> again, it’s better if you’re happy with quads etc.
>>> 
>>> Cheers,
>>> 
>>> Mike
>>> 
>>> Sent from my iPad
>>> 
>>>> On 4 Jul 2021, at 08:50, Jan-Pieter Jacobs <[email protected]> 
>>>> wrote:
>>>> 
>>>> Not using cut here, but I took a generative approach:
>>>> 
>>>> ssd3=: 10#. [:~.[:,/(1 1 1 3 |."0 1~ i. 4) #"1/ (4#10)#:
>>>> 1000+i.@9000"_
>>>> 
>>>> It basically starts from all 4 digit numbers, repeats each digit in 
>>>> turn, then takes them all together and nubs it.
>>>> I guess it's fine if your definition considers 3 or more 
>>>> repetitions as being fine.
>>>> 
>>>> I didn't double check all, but a quick random check seems to 
>>>> confirm the
>>>> outcome:
>>>> 
>>>>  ({~ 20 ?@$ #) ssd3 0
>>>> 333975 956664 529777 947772 886661 811175 666289 622212 858777 
>>>> 637773
>>>> 843999 488844 506662 267779 577728 111463 418444 861119 916333 
>>>> 722214
>>>> 
>>>> and it seems to run reasonably fast even on my phone:
>>>> 
>>>>  30 timex 'ssd3 0'
>>>> 0.020757
>>>> 
>>>> Best regards,
>>>> 
>>>> Jan-Pieter
>>>> 
>>>>> On Sun, Jul 4, 2021, 05:53 Raul Miller <[email protected]> wrote:
>>>>> 
>>>>> Oops, I should have replace i.9 1 with i.10 1
>>>>> 
>>>>> $1e5+I.+./(3#"1":i.10 1) +./@E."1/ ":1e5+i.9e5 1
>>>>> 33219
>>>>> 
>>>>> Sorry about that...
>>>>> 
>>>>> --
>>>>> Raul
>>>>> 
>>>>>> On Sat, Jul 3, 2021 at 11:51 PM Raul Miller <[email protected]> 
>>>>>> wrote:
>>>>>> 
>>>>>> You did not include a definition for triple here, and I have no 
>>>>>> way of reproducing your result.
>>>>>> 
>>>>>> This is a bit slower to execute (0.37 seconds on my laptop), but 
>>>>>> faster to implement:
>>>>>> 
>>>>>>  $1e5+I.+./(3#"1":i.9 1) +./@E."1/ ":1e5+i.9e5 1
>>>>>> 29816
>>>>>>  (12345+i.10){1e5+I.+./(3#"1":i.9 1) +./@E."1/ ":1e5+i.9e5 1
>>>>>> 444993 444994 444995 444996 444997 444998 444999 445000 445111
>>>>>> 445222
>>>>>> 
>>>>>> --
>>>>>> Raul
>>>>>> 
>>>>>> On Sat, Jul 3, 2021 at 7:59 PM Julian Fondren 
>>>>>> <[email protected]>
>>>>> wrote:
>>>>>>> 
>>>>>>> On Saturday, July 3rd, 2021 at 6:50 PM, Julian Fondren <
>>>>> [email protected]> wrote:
>>>>>>>> That takes about 80x as long as the attached method using the 
>>>>>>>> FFI and a quick library in D.
>>>>>>> 
>>>>>>> That attachment got stripped? Well, it's nothing special.
>>>>>>> 
>>>>>>> extern(C) void triples(int* xs, int len) @nogc {
>>>>>>>   foreach (i; 0 .. len)
>>>>>>>       xs[i] = triple(xs[i]);
>>>>>>> }
>>>>>>> 
>>>>>>>  triplesd =: './libtriple.so triples n *i i'&cd  triples =: [: 
>>>>>>> triplesd (; #)  triples 123334 122344 121212 111222 112122 
>>>>>>> 555432
>>>>>>> +-+-----------+-+
>>>>>>> |0|1 0 0 1 0 1|6|
>>>>>>> +-+-----------+-+
>>>>>>>  $(#~ triple"1) sn
>>>>>>> 33219 6
>>>>>>>  $(#~ 1 {:: triples) n
>>>>>>> 33219
>>>>>>>  30 timex '$(#~ triple"1) sn'
>>>>>>> 0.869076
>>>>>>>  30 timex '$(#~ 1 {:: triples) n'
>>>>>>> 0.0100672
>>>>>>> 
>>>>>>> ----------------------------------------------------------------
>>>>>>> --
>>>>>>> ---- 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
> ----------------------------------------------------------------------
> 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