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 
<rauldmil...@gmail.com>:  
 
 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
<programm...@jsoftware.com> 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 <programm...@jsoftware.com>:
>
>  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 <r.e.b...@outlook.com> wrote:
> >
> > My 2cts:  https://code.jsoftware.com/wiki/Essays/Combinations
> >
> >
> > R.E. Boss
> >
> >
> > -----Original Message-----
> > From: Programming <programming-boun...@forums.jsoftware.com> On Behalf Of 
> > 'Michael Day' via Programming
> > Sent: zondag 1 augustus 2021 19:55
> > To: programm...@jsoftware.com
> > 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 <programm...@jsoftware.com>:
> >>
> >>  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 <rauldmil...@gmail.com> 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 <srdjan.sti...@gmail.com> 
> >>>> wrote:
> >>>>
> >>>> You can use “13 : ‘…’” construct to get tacit verb.
> >>>>
> >>>> On Sat 31. Jul 2021 at 18:00, 'Pascal Jasmin' via Programming <
> >>>> programm...@jsoftware.com> wrote:
> >>>>
> >>>>> 2 ([ (] #~ [ = +/"1@:]) f@]) 6
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> On Saturday, July 31, 2021, 11:52:10 a.m. EDT, 'Bo Jacoby' via
> >>>>> Programming <programm...@jsoftware.com> 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

Reply via email to