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