The following confirms and quantifies the effect of triggering special code
(in one instance).
Y=. 6666$'Mississippi'
11 stp noun define
([: /: /:)Y
/: @: /: Y
)
┌──────────────┬──────┬──────────────┬──────────┐
│Sentence │Space │Time │Product │
├──────────────┼──────┼──────────────┼──────────┤
│([: /: /:)Y│198400│0.000115393909│22.8941515│
├──────────────┼──────┼──────────────┼──────────┤
│ /: @: /: Y│71424 │3.1391718e_5 │2.24212206│
└──────────────┴──────┴──────────────┴──────────┘
On Wed, Jan 20, 2016 at 5:06 PM, Henry Rich <[email protected]> wrote:
> Right, but I noticed that she was using 13 : using /: /: y & wasn't sure
> she was aware of an issue.
>
> Moreover, I find that ([: /: /:) is NOT special; surprising, because
> usually when u@:v y is fast, ([: u v) y is too; not here.
>
> The definitive list of special code is at
>
>
> http://code.jsoftware.com/wiki/Vocabulary/SpecialCombinations#Sorting_and_Ordering
>
>
> Henry Rich
>
>
>
>
> On 1/20/2016 7:50 AM, Mike Day wrote:
>
>> 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