Wow Raul!Yes, understanding rank is important. I obviously do not understand
rank.Thanks.Bo.
Den tirsdag den 3. august 2021 23.43.32 CEST skrev Raul Miller
<[email protected]>:
E=:+/ % #
Va=:E@:*: - *:@:E
Bv=:-.&.:%@# * Va
S=:((((= +/"1) # ]) ([: #: [: i. 2&^)) #) # ]
T=:E@Bv@|:@S
n=:4 0 1 2 2 4 3 2
2 3 T"0 1 n
1.92857 1.92857
Or:
T=:E@Bv@|:@S"0 1
2 3 T n
1.92857 1.92857
Understanding the rank conjunction is important when understanding and
working with J.
I hope this helps,
--
Raul
On Tue, Aug 3, 2021 at 4:02 PM 'Bo Jacoby' via Programming
<[email protected]> wrote:
>
> Thanks to Boss and Mike. I will use comb2 when I need it. I don't need it
>quite yet.
> How do I modify the code such that
> 2 3 T n
> provides
> (2 T n),(3 T n)
>
> 1.92857 1.92857
>
> ?
>
> The present code is:
>
> E=.+/ % #
>
> Va=.E@:*: - *:@:E
> Bv=.-.&.:%@# * Va
>
>
>
> S=.((((= +/"1) # ]) ([: #: [: i. 2&^)) #) # ]
>
>
>
> T=.E@Bv@|:@S
>
> n=.4 0 1 2 2 4 3 2
>
>
>
>
> 2 T n
>
> 1.92857
>
> 3 T n
> 1.92857
>
>
> 2 3 T n
>
> |length error: S
>
> | 2 3 T n
>
>
>
>
>
>
> Thanks! Bo.
> Den tirsdag den 3. august 2021 16.43.21 CEST skrev 'Mike Day' via
>Programming <[email protected]>:
>
> The point I was trying to make was that in some cases, Bo Jacobi’s approach
>to generating all perms of x 1s and (y-x) 0s by filtering all Boolean of
>length y could be expensive, and that using some form of comb might be
>considered preferable.
>
> I found it interesting to adapt the version of comb in addons/stats to
> generate the integer encodings of the required booleans, as shown in
> Smpscomb.
>
> Rather ironically, it turns out that Bo required the results of comb, or
> its variants, so it was unnecessary to render them as booleans!
>
> Cheers,
>
> Mike
>
> Sent from my iPad
>
> > On 3 Aug 2021, at 14:10, R.E. Boss <[email protected]> wrote:
> >
> > My 2cts: https://code.jsoftware.com/wiki/Essays/Combinations
> >
> >
> > R.E. Boss
> >
> >
> > -----Original Message-----
> > From: Programming <[email protected]> On Behalf Of
> > 'Michael Day' via Programming
> > Sent: zondag 1 augustus 2021 19:55
> > To: [email protected]
> > Subject: Re: [Jprogramming] Tacit hook
> >
> > Thanks, Bo.
> >
> > This variation on comb works pretty well, except it doesn't test for the
> > empty case, ie x = 0:
> >
> > NB. these boolean verbs are quicker than multiply and add for this case
> > twice =: 1 & (32 b.) or =: 23 b.
> >
> > Smpscomb =: 4 : 0
> > k=. 2^i.>:d=.y-x
> > z=. <"0 k
> > for. i.<: x do.
> > z=. k or &.> ,&.>/\. twice&.> z
> > end.
> > #:/:~;z
> > )
> >
> > ts
> > 6!:2 , 7!:2@]
> > ts'3 Smps 20'
> > 0.6071034 2.873121e8
> > ts'3 Smpscomb 20'
> > 0.0001229 66976
> > 3 (Smps -: Smpscomb) 20
> > 1
> >
> > The sort adds a little time and space; it is only necessary if you require
> > the same ordering as your original example.
> >
> > Cheers,
> >
> > Mike
> >
> >> On 01/08/2021 18:31, 'Bo Jacoby' via Programming wrote:
> >> Thanks to Mike!
> >>
> >> comb=: 4 : 0
> >>
> >> NB.*comb v combinations of size x from i.y
> >>
> >> comb=: 3 : 0
> >>
> >> comb~ y
> >>
> >> :
> >>
> >> k=. i.>:d=. y-x
> >>
> >> z=. (d$<i.0 0),<i.1 0
> >> for. i.x do. z=. k ,.&.> ,&.>/\. >:&.> z end.
> >> 3 comb 6
> >>
> >>
> >>
> >> I need to study in order to make it do what I want. I am aware that my
> >> programming is embarassingly inefficient.
> >> Thanks to Raul!
> >> 2 (((= +/"1) # ]) f) 6 NB. fork, not hook!
> >>
> >> I wonder why it is hard to code the hook. It is not important, but it is
> >> strange.
> >> I am studying the bessel correction. I turns out that the mean of the
> >> bessel corrected variances of all samples is equal to the bessel corrected
> >> variance of the population.
> >>
> >> E =. +/%# NB. mean
> >>
> >> Va =. E@:*:-*:@:E NB. Variance
> >>
> >> Bc =. -.&.:%@#*Va NB. Bessel corrected variance
> >>
> >> S =. ((((=+/"1)#])#&2#:[:i.2&^) #)#] NB. samples
> >>
> >> Bc n=.i.8
> >>
> >> 6
> >>
> >> E Bc |:4 S n
> >> 6
> >>
> >> E Bc |:5 S n
> >> 6
> >>
> >> E Bc |:6 S n
> >> 6
> >>
> >> E Bc |:7 S n
> >> 6
> >>
> >> E Bc |:8 S n
> >> 6
> >>
> >>
> >>
> >>
> >> Den søndag den 1. august 2021 16.06.21 CEST skrev 'Mike Day' via
> >>Programming <[email protected]>:
> >>
> >> Nice work, especially persuading 13 : to return a tacit version.
> >> I had reached the same solution as Pascal Jasmin’s, so not worth a
> >> comment in itself.
> >>
> >> However, it is just about worth pointing out that the filtering approach
> >> gets expensive for larger values of y; eg 3 Smps 20 would entail
> >> filtering 2^20 rows to obtain 1140. In that case, I reckon it’s better to
> >> use the 1s indices provided by, eg, 3 comb 20 .
> >> comb is in addons/stats/base/combinatorial .
> >>
> >> In case it matters!
> >>
> >> Mike
> >>
> >> Sent from my iPad
> >>
> >>> On 31 Jul 2021, at 20:48, Raul Miller <[email protected]> wrote:
> >>>
> >>> That's a bit tricky in this case, but it can be done:
> >>>
> >>> First off, the problem:
> >>>
> >>> 13 : '(#~x=+/"1)f y' NB. select row
> >>> 4 : '(#~x=+/"1)f y'
> >>>
> >>> But we can work around this by giving 13 : a variant expression:
> >>>
> >>> 13 : 't#~x=+/"1 t=.f y'
> >>> [ (] #~ [ = [: +/"1 ]) [: f ]
> >>>
> >>> And, in this example, we can turn this into a hook through inspection:
> >>> Smps=: (] #~ [ = [: +/"1 ]) f
> >>>
> >>> This could be simplified further, of course:
> >>> 2 ((] #~ (= +/"1)) f) 6
> >>> and
> >>> 2 (((= +/"1) # ]) f) 6
> >>>
> >>> do the same computation.
> >>>
> >>> I hope this helps,
> >>>
> >>> --
> >>> Raul
> >>>
> >>>> On Sat, Jul 31, 2021 at 12:43 PM Srdjan Stipic <[email protected]>
> >>>> wrote:
> >>>>
> >>>> You can use “13 : ‘…’” construct to get tacit verb.
> >>>>
> >>>> On Sat 31. Jul 2021 at 18:00, 'Pascal Jasmin' via Programming <
> >>>> [email protected]> wrote:
> >>>>
> >>>>> 2 ([ (] #~ [ = +/"1@:]) f@]) 6
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> On Saturday, July 31, 2021, 11:52:10 a.m. EDT, 'Bo Jacoby' via
> >>>>> Programming <[email protected]> wrote:
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> Consider this code
> >>>>>
> >>>>> f=.#&2#:[:i.2&^ NB. 0-1 rows
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> Smps=. 4 : '(#~x=+/"1)f y' NB. select rows
> >>>>>
> >>>>> 2 Smps 6 NB. for example
> >>>>> 0 0 0 0 1 1
> >>>>>
> >>>>> 0 0 0 1 0 1
> >>>>>
> >>>>> 0 0 0 1 1 0
> >>>>>
> >>>>> 0 0 1 0 0 1
> >>>>>
> >>>>> 0 0 1 0 1 0
> >>>>>
> >>>>> 0 0 1 1 0 0
> >>>>>
> >>>>> 0 1 0 0 0 1
> >>>>>
> >>>>> 0 1 0 0 1 0
> >>>>>
> >>>>> 0 1 0 1 0 0
> >>>>>
> >>>>> 0 1 1 0 0 0
> >>>>>
> >>>>> 1 0 0 0 0 1
> >>>>>
> >>>>> 1 0 0 0 1 0
> >>>>>
> >>>>> 1 0 0 1 0 0
> >>>>>
> >>>>> 1 0 1 0 0 0
> >>>>>
> >>>>> 1 1 0 0 0 0
> >>>>>
> >>>>>
> >>>>>
> >>>>> I want to rewrite it tacit
> >>>>> Smps=.((=+/)"1 f)#f@]
> >>>>> This works but is without the hook, so "f" is repeated.
> >>>>> How to write the hook tacitly?
> >>>>> I believe that this is easy, but I am stuck.
> >>>>> Thank you!
> >>>>> Bo.
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> -------------------------------------------------------------------
> >>>>> --- 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
> ----------------------------------------------------------------------
> 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