Hi Bo, As I said, producing a tacit version is tricky! :)
Regarding my request, I complicated things by asking a question related to your verb called 'simplify' which you mentioned in an old thread (see [0] in my message). Anyway, I will try to pose my question later in the original thread within the right context. On Wed, Jul 13, 2016 at 4:05 PM, 'Bo Jacoby' via Programming < [email protected]> wrote: > Hi Jose! > I cannot comment on your tacit version of 13 : 'x H. y 2' because I do not > understand it, but it is nice that it exists. > Nor do I understand your request to generalize from vector to matrix. > The problem solved was this. A student performing a multiple choice test > knew x answers and guessed the remaining n-x answers correctly with > probability 50% and incorrectly with probability 50%. So he provided y > correct and n-y incorrect answers. The task is to estimate the unknown > number x from the known numbers n and y . > I got help here: > https://en.wikipedia.org/wiki/User_talk:Joel_B._Lewis#Analyzing_the_multiple_choice_test > > The troublesome sums were expressed in terms of hypergeometric functions. > Raul Miller helped me with the J code. > H2=.4 :'x H.y 2' > ms=.[:(([:<:{.),:[:%:{.*([:+:{:)-[:>:{.)2%~/\(1 2 > 3,&>/[:-[)H2"1[:-1e_7+] > 5j1":|:(10+i.11) ([,ms) 20 > 10.0 2.7 2.1 > 11.0 3.5 2.5 > 12.0 4.6 2.8 > 13.0 5.9 3.0 > 14.0 7.4 3.2 > 15.0 9.2 3.2 > 16.0 11.0 3.1 > 17.0 13.0 2.8 > 18.0 15.0 2.4 > 19.0 17.0 2.0 > 20.0 19.0 1.4 > How do you want to extend this to matrices? > Thanks. Bo. > > Den 19:20 onsdag den 13. juli 2016 skrev Jose Mario Quintana < > [email protected]>: > > > > Hi Bo, > > In principle, any explicit verb can be rewritten tacitly. In practice, > sometimes this can be very difficult if one adheres to the Dictionary > rules; however, with some familiarity it is usually easy as long as one is > willing to bend the rules (and expressions such as 13 :'x H. y 2' can > even be translated automatically with the right tool). I provided an > embedded hand-coded tacit form of H2 in my reply (search below for the > entry 'Mnt=.' and compare it to the entry 'Mn=.') using a wicked tacit > toolkit. An alternative stand-alone tacit version of H2 follows, (mind > you, it is long vs its explicit counterpart), > > h2=. ,^:(0:`(<'`:'))&6@:([,(<'H.'),(<2;~":0),~])&:(<@:((":0) ; ])) > > While I have your attention, I hope, I would like to ask you a question > regarding your simplify verb [0]: Do you have a similar verb when instead > of having a univariate sample (vector) one has a multivariate sample > (matrix)? I would be interested to see a version even if it is restricted > to matching just the first two moments (the mean and variance-covariance of > the sample). > > > [0] [Jprogramming] simplify > http://www.jsoftware.com/pipermail/programming/2015-June/042130.html > > On Tue, Jul 12, 2016 at 1:09 AM, 'Bo Jacoby' via Programming < > [email protected]> wrote: > > > > > Hi Jose! > > Thank you for your interest in my program. > > I do not know if there exists a tacit version of (13 :'x H. y 2') . > > I do not share your allergy against > > [:-1e_7+] NB. 10 characters > > as opposed to > > -@:(1e_7+]) NB. 12 characters > > > > Normally I would prefer the shorter version. > > Bo. Den 1:32 tirsdag den 12. juli 2016 skrev Jose Mario Quintana < > > [email protected]>: > > > > > > > > Your version would be a neat tacit rewriting of ms, except that you > > defined > > H2 explicitly. The hybrid nature of ms, written this way, is apparent > when > > one tries to fix it, > > > > ms f. > > [: (([: <: {.) ,: [: %: {. * ([: +: {:) - [: >: {.) 2 %~/\ (1 2 3 ,&>/ > [: - > > [) 4 : '(x H.y)2'"1 [: - 9.9999999999999995e_8 + ] > > > > Personally, I am allergic to forks with leading caps; but finding a > remedy > > a remedy is easy, > > > > ms=. (<:@:{. ,: %:@:({. * +:@:{: - >:@:{.))@:(2 %~/\ (1 2 3 ,&>/ -@:[) > > H2"1 -@:(1e_7 + ])) > > > > Either way, the tricky part is to rewrite H2 tacitly. > > > > > > > > > > On Mon, Jul 11, 2016 at 3:46 AM, 'Bo Jacoby' via Programming < > > [email protected]> wrote: > > H2=.4 :'(x H.y)2' > > ms=.[:(([:<:{.),:[:%:{.*([:+:{:)-[:>:{.) 2%~/\(1 2 > 3,&>/[:-[)H2"1[:-1e_7+] > > 6 6j2 6j2 ":|:7 8 9 10 ([,ms) 10 > > 7 3.73 1.96 > > 8 5.25 2.05 > > 9 7.05 1.87 > > 10 9.01 1.39 > > > > > > Den 21:58 søndag den 10. juli 2016 skrev Jose Mario Quintana < > > [email protected]>: > > > > > > > > Exercise 8. Rewrite the verb explicit verb ms shown below tacitly, as > > usual, bonus points for a fixed tacit version (see the message [0]). > > > > Mn=: 13 :'y H.(-x+1e_7)2'"1 > > M=: 13 :'|:y Mn 1 2 3,&>/-i.1+y' > > ms=. 13 : '(<:a),:%:a*(+:b)->:a[''a b''=.|:2%~/\"1 M y' > > 3":(i.@>:,ms) 10 > > > > A (wicked) solution follows after the warning. > > > > [0] [Jprogramming] Using the hypergeometric adverb (H.). > > http://www.jsoftware.com/pipermail/programming/2016-July/045466.html > > > > > > > > > > _|_|_| _| _| > > _| _|_|_| _|_| _| _|_| _| _|_| > > _|_| _| _| _| _| _| _| _|_|_|_| _|_| > > _| _| _| _| _| _| _| _| _| > > _|_|_| _|_|_| _|_| _| _| _|_|_| _| _| _| _| > > _| > > _| > > > > > > > > > > The following is a slightly edited session: > > > > JVERSION > > Engine: j805/j64/windows > > Beta-9: commercial/2016-07-05T15:45:22 > > Library: 8.04.15 > > Qt IDE: 1.4.10/5.4.2 > > Platform: Win 64 > > Installer: J804 install > > InstallPath: j:/program files/j > > Contact: www.jsoftware.com > > > > First, the explicit version, > > > > Mn=: 13 :'y H.(-x+1e_7)2'"1 > > M=: 13 :'|:y Mn 1 2 3,&>/-i.1+y' > > ms=. 13 : '(<:a),:%:a*(+:b)->:a[''a b''=.|:2%~/\"1 M y' > > 3":(i.@>:,ms) 10 > > 0 1 2 3 4 5 6 7 8 9 10 > > 0 0 0 1 1 2 3 4 5 7 9 > > 0 0 1 1 1 1 2 2 2 2 1 > > > > Next, the tacit (fixed) version. > > > > Running the J Wicket Toolkit (see the trailing message), > > > > (0!:0)<'/.../j wicked toolkit.ijs' > > > > which is need it to define Mnt, > > > > Mnt=. (] train@:((an 2) ;~ Cloak <'H.')f. (-@:(1e_7 + [)))"1 > > > > Mt=. |:@:(Mnt 1 2 3 ,&>/ -@:i.@:>:) > > > > mst=. (<:@:[ ,: %:@:([ * +:@:] - >:@:[))/@:|:@:(2 %~/\"1 Mt f.) > > > > > > > > > > > > 3":(i.@>:,mst) 10 > > > > 0 1 2 3 4 5 6 7 8 9 10 > > > > 0 0 0 1 1 2 3 4 5 7 9 > > > > 0 0 1 1 1 1 2 2 2 2 1 > > > > > > > > NB. It is fixed... > > > > 66 (-@:[ ]\ 5!:5@<@:]) 'mst' > > > > (<:@:[ ,: %:@:([ * +:@:] - >:@:[))/@:|:@:(2 %~/\"1 |:@:(((] ,^:(0: > > > > ``:)&6 :.(<@:((,'0') ,&< ]))@:((<(,'0');2) ;~ ,^:(0:`H.)) -@:(9.99 > > > > 99999999999995e_8 + [))"1) (1 2 3 ,&>/ -@:i.@:>:))) > > > > > > > > (3":(i.@>:,ms) 100) -: (3":(i.@>:,mst) 100) > > > > 1 > > > > > > On Fri, Dec 18, 2015 at 7:33 PM, Jose Mario Quintana < > > [email protected]> wrote: > > > > > Dan wrote: > > > > > > At some point we’re going to have to put our heads together and create > a > > > JAL addon to collect all these utilities. > > > > > > "So much to do, so little time." However, my current writing style > might > > > be perceived by many as nasty. A sample follows together with an > updated > > > Wicked Tacit Toolkit (WTT) that must be pre-loaded. > > > > > > WARNING: The following is not for the faint-hearted :) > > > > > > > > > > > http://www.collinsdictionary.com/dictionary/english/not-for-the-faint-hearted > > > > > > Fetch, From, Left and Right are among some added adverbs to the WTT > which > > > I find useful. What do they do? > > > > > > From produces a related list of boxed verbs, > > > > > > 3 From > > > +-----------+ > > > ¦0&{¦1&{¦2&{¦ > > > +-----------+ > > > _5 From > > > +------------------------+ > > > ¦_5&{¦_4&{¦_3&{¦_2&{¦_1&{¦ > > > +------------------------+ > > > > > > Similiarly, > > > > > > _3 Fetch > > > +--------------------------+ > > > ¦_3&({::)¦_2&({::)¦_1&({::)¦ > > > +--------------------------+ > > > 5 Fetch > > > +---------------------------------------+ > > > ¦0&({::)¦1&({::)¦2&({::)¦3&({::)¦4&({::)¦ > > > +---------------------------------------+ > > > > > > Left and Right select arguments accordingly, > > > > > > 2 Fetch Right > > > +---------------------+ > > > ¦0&({::)@:]¦1&({::)@:]¦ > > > +---------------------+ > > > _3 From Left > > > +-----------------------+ > > > ¦_3&{@:[¦_2&{@:[¦_1&{@:[¦ > > > +-----------------------+ > > > > > > When can they be useful? > > > > > > This is an illustration (rewriting sf1 adverb in the original thread), > > > > > > 'V0 V1 V2' =. 3 Fetch Right > > > fg=. (0;1)&{:: NB. Fetching the gerund > > > sf1=. ((;:'@{}') train o ((V0 at [cv) ; V1 ; (V2 at ]cv))&:box fg) o > > > tie&'' f.adv > > > > > > _66 ]\ (5!:5)@< 'sf1' > > > ("_)(((`'')(&(((;:'@{}') ,^:(0:``:)&6 :.(<@:((,'0') ,&< ]))@:((0&( > > > {::)@:] ,^:(0:`@:) >@:((<[)"_)) ; 1&({::)@:] ; 2&({::)@:] ,^:(0:`@ > > > :) >@:((<])"_))&:(<@:(,^:(0:``:)&6 :.(<@:((,'0') ,&< ])))"0) (0;1) > > > &({::))@:(,^:(0:``))&''@:(,^:(0:``:)&6 :.(<@:((,'0') ,&< ]))@:(<@: > > > ((0;1;0)&({::))))@:[)))((`_)(`:6))) > > > > > > NB. Testing... > > > > > > (v0 v1 v2)sf1 > > > v0@:[ v1 v2@:] > > > +----------------------+ > > > ¦+-------+¦v1¦+-------+¦ > > > ¦¦v0¦@:¦[¦¦ ¦¦v2¦@:¦]¦¦ > > > ¦+-------+¦ ¦+-------+¦ > > > +----------------------+ > > > > > > 3 4 (+: + -:)sf1 2 4 > > > 7 10 > > > > > > This is another version that might look a little less unfamiliar, > > > > > > NB. Defining the darkhorse... > > > > > > 'ATOP LEFT RIGHT'=. 3 From Left > > > 'V0 V1 V2' =. 3 From Right > > > > > > fg=. (0;1)&{:: NB. Fetching the gerund > > > workhorse=. (;:'@[]') (V0 , ATOP , LEFT , V1 , V2 , ATOP , RIGHT c) > fg > > > darkhorse=. train o workhorse o tie&'' > > > > > > NB. Defining the adverb... > > > > > > sf1=. darkhorse f.adv > > > > > > _66 ]\ (5!:5)@< 'sf1' > > > ("_)(((`'')(&(,^:(0:``:)&6 :.(<@:((,'0') ,&< ]))@:((;:'@[]') (0&{@ > > > :] , 0&{@:[ , 1&{@:[ , 1&{@:] , 2&{@:] , 0&{@:[ , 2&{@:["_) (0;1)& > > > ({::))@:(,^:(0:``))&''@:(,^:(0:``:)&6 :.(<@:((,'0') ,&< ]))@:(<@:( > > > (0;1;0)&({::))))@:[)))((`_)(`:6))) > > > > > > NB. Testing... > > > > > > (v0 v1 v2)sf1 > > > v0@[ v1 v2@] > > > +--------------------+ > > > ¦+------+¦v1¦+------+¦ > > > ¦¦v0¦@¦[¦¦ ¦¦v2¦@¦]¦¦ > > > ¦+------+¦ ¦+------+¦ > > > +--------------------+ > > > > > > 3 4 (+: + -:)sf1 2 4 > > > 7 10 > > > > > > > > > The updated WTT follows (as always, beware of wrapping lines), > > > > > > > > > NB. > > > > > > > > ---------------------------------------------------------------------------- > > > NB. Wicked Tacit Toolkit... > > > NB. > > > > > > > > ---------------------------------------------------------------------------- > > > > > > NB. Load it using 0!:0 or similar or > > > NB. paste it on an J editing window and use Crtl-A Crtl-E or > > > NB. of course, load it using a hot key (or replace '=.' by '=:' if you > > > must) > > > > > > NB. A word is a noun, verb, adverb or conjunction > > > > > > > > > (_ o=. @:) (c=. "_) (e=. &.>) (x=. @:[) (y=. @]) > > > > > > an=. <@:((,'0') ,&< ]) NB. Atomizing words (monadic verb) > > > > > > Cloak=. (0:`)(,^:) NB. Cloaking (the > > > atomic representations of) > > > NB. adverbs or conjunctions as monadic > > or > > > NB. dyadic verbs (adv) > > > Cloak=. ((5!:1)@:<'Cloak')Cloak NB. Cloak verbing itself! (monadic > ver) > > > > > > 'amper at evoke fix rank tie'=. Cloak o < e o ;: '& @: `: f. " `' > > > NB. Verbing some adverbs and conjunctions > > > > > > train=. (evoke&6) :. an f. NB. (`:6) with a convenient obverse > > > NB. (monadic verb) > > > box=. (< o train "0) f. NB. Boxing primitives and pro-words > > > NB. (monadic verb) > > > > > > af=. an o fix > > > > > > (a0=. `'') (a1=. (@:[) ((<'&')`) (`:6)) (a2=. (`(<(":0);_)) (`:6)) > > > av=. ((af'a0')`) (`(af'a1')) (`(af'a2') ) (`:6) > > > NB. Adverbing a monadic verb (adv) > > > assert 1 4 9 -: 1 2 3 *: adv > > > > > > aw=. < o ((0;1;0)&{::) NB. Fetching the atomic representation > > > > > > u (a3=. (o (train o aw f.)) ('av'f.)) (a4=. "_) > > > > > > adv=. train o ((af'a4') ; ] ; (af'a3')"_) f.av > > > assert 1 4 9 -: 1 2 3 *: adv > > > assert 6 -: * (,^:(0:`(<'/'))) adv 1 2 3 > > > assert 0 1 3 -: (*:`(+/\)) (train f. o (0&{ , (<'-') , 1&{)) adv 1 2 3 > > > > > > a3=. (o (aw f.)) ('av'f.) > > > > > > Adv=. (train f. @:) (train o ((af'a4') ; ] ; (af'a3')"_) f.av) > > > assert 1 4 9 -: 1 2 3 ((<'*:') ; ] ) Adv > > > assert 6 -: * (< , ((<'/')"_)) Adv 1 2 3 > > > assert 0 1 3 -: (*:`(+/\)) (0&{ , (<'-') , 1&{)@:(('';1)&{::) Adv 1 2 > 3 > > > > > > Ver=. Cloak o af f. NB. Verbing after fixing a pro-adverb or > > > pro-conjunction > > > NB. (monadic verb) > > > ver=. Cloak o an f. NB. Verbing after fixing an adverb or conjunction > > > NB. (monadic verb) > > > > > > NB. Defining cv in terms of itself... > > > cv=. ((rank&_) o < o train)f.adv (>@:) NB. First version > > > cv=. (train f. cv at (<x rank _ c)) f.adv NB. Constant verb > > > u ( cv=. ( >cv at (<x rank _ c)) f.adv ) > > > NB. Constant word (adv) > > > NB. (cv is to words as c is to nouns) > > > assert (CRLF cv _) -: CRLF > > > assert (u cv _) <adv -: u <adv > > > assert (!@# cv _) <adv -: !@# <adv > > > assert (< o ((Ver'cv') o train <'/') _) -: ( < o train (<'/')) > > > assert (< o ((Ver'cv') o train <'"') _) -: ( < o train (<'"')) > > > > > > > > > NB. Fetch and From... > > > pointers=. (<: o - o i.)`i. @.(0<]) > > > > > > Fetch=. (] amper {:: cv)e o pointers f.adv NB. Verbs mnemonics > pointers > > > NB. (e.g., ( 'u0 u1 u2 u3'=. 4 Fetch ) j ( 'v0 v1 v2 v3'=. _4 Fetch ) > ) > > > > > > assert (< o train 3 Fetch) -: ( 0&({::) 1&({::) 2&({::)) (< adv) > > > assert (< o train _3 Fetch) -: (_3&({::) _2&({::) _1&({::)) (< adv) > > > > > > From=. (] amper { cv)e o pointers f.adv NB. Verbs mnemonics pointers > > > NB. From=. (] ([ amper train y)(({ `'')c))e o i. f. adv > > > NB. (e.g., ( 'u0 u1 u2 u3'=. 4 From ) j ( 'v0 v1 v2 v3'=. _4 From ) ) > > > > > > assert (< o train 3 From ) -: ( 0&{ 1&{ 2&{ ) (<adv) > > > assert (< o train _3 From ) -: (_3&{ _2&{ _1&{ ) (<adv) > > > > > > Left=. (at [cv)e f.adv > > > Right=. (at ]cv)e f.adv > > > > > > > > > On Tue, Dec 15, 2015 at 6:47 PM, Dan Bron <[email protected]> wrote: > > > > > >> > Against my best judgement :), a purist version of Adv follows, > > >> > assert 1 4 9 -: 1 2 3 *: av > > >> > > >> That’s so cool :) > > >> > > >> At some point we’re going to have to put our heads together and > create a > > >> JAL addon to collect all these utilities. > > >> > > >> Named F^4, of course. > > >> > > >> -Dan > > >> ---------------------------------------------------------------------- > > >> 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 > > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
