> does [:/:/: not also benefit from special code?

I doubt it does,

timespacex '123 ([: <. %~) 210293810238120398120398120398x + i.1000'
0.00241248 1.27885e6
timespacex '123 ( <.@%~) 210293810238120398120398120398x + i.1000'
0.000590399 836992


----- Original Message -----
From: Mike Day <[email protected]>
To: [email protected]
Sent: Wednesday, January 20, 2016 7:50 AM
Subject: Re: [Jprogramming] A Different Less?

I wasn't advocating /:/: .   I prefer using @ but the 13 : ' .... '
had produced [:/:/:    .   Conicidentally,  Linda appears to
favour the [:u v idiom to u@v .

So, for Linda's benefit,  does [:/:/: not also benefit from
special code?

Mike

On 20/01/2016 12:29, Henry Rich wrote:
> Note: /:@/: y is better than /: /: y (special code)
>
> Henry Rich
>
> On 1/20/2016 5:45 AM, Mike Day wrote:
>> Maybe simpler but it requires evaluation of /:/:y twice,  whereas
>> Raul's oc manages to make rank the right hand argument to (] - {) .
>>
>> This tacitisation might be what you're looking for:
>>     13 :'r-(i.~ y){ r =./:/:y'
>>
>> i.~ (] - {) [: /: /:
>>
>>
>> It reproduces oc except for using [: rather than @  !
>>
>> Mike
>>
>> On 20/01/2016 10:27, Linda A Alvord wrote:
>>> A simpler f:
>>>
>>> f=: 13 :'(/:/:y)-(i.~ y){/:/:y'
>>>     f
>>> ([: /: /:) - i.~ { [: /: /:
>>>
>>> Linda
>>> -----Original Message-----
>>> From: Programming [mailto:[email protected]] 
>>> On Behalf Of Linda A Alvord
>>> Sent: Wednesday, January 20, 2016 3:15 AM
>>> To: [email protected]
>>> Subject: Re: [Jprogramming] A Different Less?
>>>
>>> Here's another way to write the code that so far is the fastest. How 
>>> does it compare?
>>>
>>> A=:'abcabbe'
>>> B=:'babe'
>>> f=: 13 :'(/:/:y)-(y i. y){/:/:y'
>>> g=: 13 :'((f x)>: (( ~.y)i.x){(#/.~y),0: y)#x'
>>> A g B
>>> cab
>>>         f
>>> ([: /: /:) - i.~ { [: /: /:
>>>     g
>>> [ #~ ([: f [) >: ([ i.~ [: ~. ]) { ([: #/.~ ]) , [: 0: ]
>>>
>>> Linda
>>>
>>> -----Original Message-----
>>> From: Programming [mailto:[email protected]] 
>>> On Behalf Of Raul Miller
>>> Sent: Monday, January 18, 2016 12:51 PM
>>> To: Programming forum
>>> Subject: Re: [Jprogramming] A Different Less?
>>>
>>> Hmm...
>>>
>>> A bugfixed version of my previous implementation (it broke when x -. 
>>> y was empty) performs approximately the same, for me:
>>>
>>> cle=: ,~ #~ i.@#@,~ e. [: ; (2*#/.~@]) (}.&.>~ #@[ {. ])~ (]i.,~) 
>>> </. i.@#@,~
>>>
>>> I say approximately, because timing variations mean that when I test 
>>> on the same data, sometimes it's faster and sometimes it's slower than
>>>
>>>     oc=: i.~ (] - {) /:@/:
>>>     cless =: [ #~ oc@:[ >: (i.~~.) { (#/.~,0:)@]
>>>
>>> That said, Boss's implementation is clearly more concise...
>>>
>>> Thanks,
>>>
>>> -- 
>>> Raul
>>>
>>>
>>>
>>> On Mon, Jan 18, 2016 at 12:17 PM, Marshall Lochbaum 
>>> <[email protected]> wrote:
>>>> That's a very cool solution, and much quicker than the one based on
>>>> progressive index-of. Instead of taking the occurrence count of both x
>>>> and y, it just takes the count for x and compares it to the total
>>>> number of occurrences in y, given by (#/.~).
>>>>
>>>> Here's a comparison of the two methods. It turns out in the version
>>>> based on progressive index-of, the desired verb can be obtained just
>>>> from replacing (i.) with (-.) and then using the first column of the
>>>> result to select from x, so I've used that version.
>>>>
>>>>     NB. Shared verb for occurrence count
>>>>     oc=: i.~ (] - {) /:@/:
>>>>     NB. Simplified form of what Roger and I posted
>>>>     cless1 =: [ {~ [: {."1 #@[ ({. -.&(,.oc) }.) [ i. ,
>>>>     NB. Tacitized R.E. Boss solution
>>>>     cless2 =: [ #~ oc@:[ >: (i.~~.) { (#/.~,0:)@]
>>>>
>>>>     NB. test data
>>>>     'a b' =. 500 ({.;~}.) +&(1e5 ?@$ 26)&.(a.&i.) 'a'
>>>>     10 (6!:2) 'a cless1 b'
>>>> 0.0178952
>>>>     10 (6!:2) 'a cless2 b'
>>>> 0.0063745
>>>>     a (cless1 -: cless2) b
>>>> 1
>>>>
>>>> To summarize, here's the fastest solution so far:
>>>>     oc=: i.~ (] - {) /:@/:
>>>>     cless =: [ #~ oc@:[ >: (i.~~.) { (#/.~,0:)@]
>>>>
>>>> Marshall
>>>>
>>>> On Mon, Jan 18, 2016 at 03:49:46PM +0000, R.E. Boss wrote:
>>>>> I'm getting old, but still remember my solution, improved by Hui:
>>>>>
>>>>> http://www.jsoftware.com/pipermail/general/2004-May/017503.html
>>>>>
>>>>>     'abcabbe' strikeb2 'babe'
>>>>> cab
>>>>>
>>>>> Curious how it performs compared to the other solutions.
>>>>>
>>>>>
>>>>> R.E. Boss
>>>>>
>>>>>
>>>>>> -----Original Message-----
>>>>>> From: Programming [mailto:[email protected]]
>>>>>> On Behalf Of June Kim (???)
>>>>>> Sent: maandag 18 januari 2016 5:19
>>>>>> To: Programming forum <[email protected]>
>>>>>> Subject: [Jprogramming] A Different Less?
>>>>>>
>>>>>> Hello
>>>>>>
>>>>>> I am looking for a verb(cless) that does something similar to
>>>>>> Less(-.) but counting the elimination, for example:
>>>>>>
>>>>>>     'abcabbe' -. 'abbe'
>>>>>>
>>>>>> c
>>>>>>
>>>>>>     'abcabbe' cless 'babe'  NB. get rid of y letters counting the
>>>>>> occurrences
>>>>>>
>>>>>> 'cab'
>>>>>>
>>>>>>
>>>>>> It is easier to define such a verb recursively: 'abcabbe' cless 
>>>>>> 'babe'
>>>>>> equald to 'e' cless~ 'b' cless~ 'a' cless~ 'b' cless~ 'abcabbe'
>>>>>>
>>>>>>
>>>>>> I think recursive definition isn't a usual J-ic approach.
>>>>>>
>>>>>>
>>>>>> How would you implement such a verb elegantly(with which I mean 
>>>>>> short)?
>>>>>>
>>>>>>
>>>>>> June
>>>>>> -------------------------------------------------------------------
>>>>>> --- 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
>>
>>
>> ---
>> 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


---
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

Reply via email to