I think I finally understand the difference!
A=:'a man a plan a canal'
;:A
┌─┬───┬─┬────┬─┬─────┐
│a│man│a│plan│a│canal│
└─┴───┴─┴────┴─┴─────┘
f=: 13 :'#>;:y'
g=: 13 :'#@>;:y'
h=: 13 :'#@:>;:y'
f A
6
g A
1 3 1 4 1 5
h A
6
f
[: # [: > ;:
g
[: #@> ;:
h
[: #@:> ;:
5!:4 <'f'
┌─ [:
├─ #
──┤ ┌─ [:
└────┼─ >
└─ ;:
5!:4 <'f'
┌─ [:
├─ #
──┤ ┌─ [:
└────┼─ >
└─ ;:
i=: 13 :'(#+>);:y'
Caution: This is a fake answer but I like it.
5!:4 <'i'
┌─ [:
│ ┌─ #
──┼────┼─ @:
│ └─ >
└─ ;:
Thanks For your patience with me. Linda
-----Original Message-----
From: Programming [mailto:[email protected]] On Behalf
Of Henry Rich
Sent: Thursday, January 21, 2016 10:58 PM
To: [email protected]
Subject: Re: [Jprogramming] A Different Less?
#@> ;: 'a man a plan a canal'
1 3 1 4 1 5
#@:> ;: 'a man a plan a canal'
6
Henry Rich
On 1/21/2016 9:50 PM, Linda A Alvord wrote:
> Jose, I'm looking for amonadic example where @ and @: have different results.
> I thought your example might work, but I can't figure out how it works:
> Here's a script until an error:
>
> Y=:'mississippi'
> f=: 13 :'/:/:y'
> g=: 13 :'/:@/:y'
> h=: 13 :'/:@:/:y'
> (f Y)-:g Y
> 1
> (f Y)-:h Y
> 1
>
> Y=. 6666$'Mississippi'
>
> 11 stp noun define
> ([: /: /:)Y
> /: @: /: Y
> )
> |value error: stp
> | 11 stp noun define
> |[-12] c:\users\user\j804-user\temp\10.ijs
>
>
> Linda
>
>
> -----Original Message-----
> From: Programming [mailto:[email protected]] On
> Behalf Of Jose Mario Quintana
> Sent: Thursday, January 21, 2016 4:22 PM
> To: Programming forum
> Subject: Re: [Jprogramming] A Different Less?
>
> 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
>
> ----------------------------------------------------------------------
> 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