I see what you mean.  Nevertheless, I still would be curious to see an
instance when [: u v dominates u @: v


On Wed, Jan 20, 2016 at 6:09 PM, Jose Mario Quintana <
[email protected]> wrote:

> The experiment was for the specific performance of [: u v vs u @: v for
> the given u, v, X and Y.  However, there are other instances as well,  for
> example, the reference [2].  I do not recall seen any instance of such
> discrepancy in performance the other way around; that is when [: u v
> clearly dominates u @: v but I would be grateful if you or anyone else
> points me in that direction.
>
> On Wed, Jan 20, 2016 at 5:40 PM, Henry Rich <[email protected]> wrote:
>
>> The experiment you made is insufficient for the purpose.
>>
>> Usually when u@:v is fast, ([: u v) gets the same treatment.  Since
>> /:@:/: is fast, I expected ([: /: /:) to be also.  (It's not, surprisingly).
>>
>> /:@:/: is handled same as /:@/: since they are equivalent.
>>
>> <.@% is fast, but there is no reason to expect ([: <. %~) to be fast, for
>> two reasons:
>>
>> 1. They have different rank.   But <.@:% is also fast, so it turns out
>> this is not the difference.
>>
>> 2. Since <.@:% is fast, so will <.@:%~ be, and normally ([: <. %) too;
>> but  ([: <. %~) is totally different.  It is equivalent to <.@:(%~) which
>> is NOT fast.
>>
>> I have not been able to figure out what the verbs f are for which <.@f is
>> fast.
>>
>> Henry Rich
>>
>>
>> On 1/20/2016 8:31 AM, 'Pascal Jasmin' via Programming wrote:
>>
>>> 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
>>>
>>
>> ----------------------------------------------------------------------
>> 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