SPOILER ALERT

Solutions to,

- Exercise 1.  Operating on the first and last items

Produce an adverb a1 such that  u a1 produces  {. u {:  where u is a verb,
for example,

   erase'u'
1

   u a1
{. u {:

   * a1
{. * {:

   * a1 2 3 5 7
14


in,

10
 9
 8
 7
 6
 5
 4
 3
 2
 1
 0



a1=. ({.`)(`{:)(`:6)

a1=. (({.`'') , ] , ({:`'')c) hg

a1=. train o ({.cv ; ] ; {:cv) f.adv


Discussion

First solution,

a1=. ({.`)(`{:)(`:6)

This classic orthodox form illustrates a combination of the two basic
building forms.  For a general explanation see the link in Dan's post [0]
(together with another solution based on @. by Pascal).

Second solution,

a1=. (({.`'') , ] , ({:`'')c) hg

This form illustrates the general "holy grail" method for producing adverbs
via the form  v hg;  hg is defied in the post [1].  The verb  v  transforms
the atomic representation of the argument of  v hg  into the gerund whose
train is the desired product of the adverb  v hg.  A sequence of steps for
building v (and consequently the adverb a1) are shown, in a session excerpt
(edited for clarity), below,

   c =. "_

      *  (          ]           )    hg
*
      *  (({.`'') , ]           )    hg
{. *
      *  (({.`'') , ] , ({:`'')c)    hg
{. * {:

      u  (({.`'') , ] , ({:`'')c)    hg
{. u {:

   a1=.  (({.`'') , ] , ({:`'')c)    hg

Third solution

a1=. train o ({.cv ; ] ; {:cv) f.adv

This form illustrates the general "sorcerer's cauldron" method for
producing adverbs via the form  v adv; adv is defined in the post [2].  The
verb  v  transforms directly the argument of  v adv  into the desired
product of the adverb  v adv.  A sequence of steps for building v (and
consequently the adverb a1) are shown, in a session excerpt (edited for
clarity), below,

      *                 ]         f.adv
*
      *         ({.cv ; ]       ) f.adv
┌──┬─┐
│{.│*│
└──┴─┘
      *         ({.cv ; ] ; {:cv) f.adv
┌──┬─┬──┐
│{.│*│{:│
└──┴─┴──┘
      * train o ({.cv ; ] ; {:cv) f.adv
{. * {:

      u train o ({.cv ; ] ; {:cv) f.adv
{. u {:

   a1=. train o ({.cv ; ] ; {:cv) f.adv

The adverb  cv  produces a wicked verb that produces the argument of the
adverb  cv   regardless of the argument taken by the wicked verb; in that
sense  cv  is a generalization of  "_, for example,

    {.cv _
{.

   ({.cv _) 2 3 5 7
2

Writing  cv  is a challenging exercise and a solution can be found, of
course, in the J Wicked Toolkit found in the post [2].

The sentence  train o ({.cv ; ] ; {:cv)  produces the  {. u {:  train
(naturally) and its variations are so handy that can be simplified; for the
example at hand, as  [: {.cv ] {: Train  where  Train  is a recurrent
adverb emulating strand notation (aka, multiple adverb).  Versions of this
adverbs, able to run on an official J interpreter (Jo), are coming in the
near future to the Jym.


References

[0] [Jprogramming] Adverbial Tacit Jym
    http://www.jsoftware.com/pipermail/programming/2016-March/044743.html

[1] [Jprogramming] Adverbial Tacit Jym
    http://www.jsoftware.com/pipermail/programming/2016-March/044789.html

[2] [Jprogramming] Tacit Toolkit (was dyadic J)
    http://www.jsoftware.com/pipermail/programming/2015-December/043757.html


On Sun, Mar 13, 2016 at 10:59 PM, Jose Mario Quintana <
[email protected]> wrote:

> Welcome to the Adverbial (and Conjunctional) Tacit Jymnasium :)
>
> Orthodox and wicked routines will be practiced here for those interested
> in developing adverbial (and conjunctional) tacit muscles.  Official
> interpreters will be the standard equipment; however, Unbox, Jx, and other
> J interpreters (including Golden Age J interpreters), as well as Toolkits ,
> see for example [0], and alike (e.g., the tacit translator), are in general
> more than acceptable although occasionally some restrictions might be
> imposed aiming to develop certain muscles.  Since adverbial (and
> conjunctional) tacit writing can (following two closely related approaches)
> be reduced to verbal tacit writing, this is also a place to exercise verbal
> tacit muscles.  In addition, some adverbs (and conjunctions) which will be
> eventually shown here can provide general support for producing tacit
> verbs, adverbs and conjunctions.
>
> Instructors will describe an exercise and, unless otherwise specified in
> advance, will be prepared to show at least one way to perform it if patrons
> (including other instructors) have not performed the exercise after a
> reasonable time; alright, they have bragging rights either way ;)  The
> exercises would typically involve producing adverbs with bonus points for
> producing fixed versions of the adverbs and their products.  Exercises are
> not required to be brand new.  Given credit to the originators of certain
> techniques is not necessary (but you know who you are and bragging is
> allowed).  Spoiler alerts by instructors and patrons will be appreciated.
>
> Instructors (Dan, Thomas et al. are you listening?), not to mention
> patrons (including beginners), are all very welcome here.  How long will
> the Jym remain open?  Indefinitely, as long as there enough patrons and
> instructors or we are kicked out of here.
>
> Let us start with a few exercises with different degrees of difficulty
> (feel free to ask any questions just be patient with me, sometimes I
> disappear for a few days):
>
>
> - Exercise 0.  Rank infinity
>
> Produce a (tacit, of course) adverb  a0  such that  u a0  produces  u"_
>  where u is a noun or a verb, for example,
>
>    u a0
> u"_
>
>    *:@:(+/) a0
> *:@:(+/)"_
>
>    u=. 1 2 3
>
>    u a0
> 1 2 3"_
>
>    1 2 3 a0
> 1 2 3"_
>
>
> - Exercise 1.  Operating on the first and last items
>
> Produce an adverb a1 such that  u a1 produces  {. u {:  where u is a verb,
> for example,
>
>    erase'u'
> 1
>
>    u a1
> {. u {:
>
>    * a1
> {. * {:
>
>    * a1 2 3 5 7
> 14
>
>
> - Exercise 2. Back insert
>
> Produce an adverb a2 which is a tacit counterpart of the explicit adverb
> rscan, see [1],
>
>    rscan=. 1 : '((>: - m |&# y) |. m)/y'
>
> for example,
>
>    (+`%`*   rscan\. ,:  +`%`*   a2\.)  1 2 3 4 5 6 7
> 1.16184971 0.161849711 12.3571429 4.11904762 0.119047619 42 7
> 1.16184971 0.161849711 12.3571429 4.11904762 0.119047619 42 7
>
>    (+`-`*`% rscan\. ,:  +`-`*`% a2\.)  1 2 3 4 5 6 7 8
> _0.6 1.6 0.8 3.75 _0.25 5.25 0.875 8
> _0.6 1.6 0.8 3.75 _0.25 5.25 0.875 8
>
>
> - Exercise 3.  Replace items
>
> Produce an adverb a3 which is a tacit counterpart of the explicit adverb
> ritem, see [2],
>
> ritem =: 1 : (':' ; 'x (I.m-:"_1 _ y) } m')
>
> for example,
>
> C=. 3 4$i.8
> A=. i.3 2 4
>
> assert 9 8 7 6 (C ritem -: C a3) 0 1 2 3
> assert (100%i.2 4) (A ritem -: A a3) 16+i.2 4
>
>
> References
>
> [0] [Jprogramming] Tacit Toolkit (was dyadic J)
>
> http://www.jsoftware.com/pipermail/programming/2015-December/043757.html
>
> [1] [Jprogramming] Am I understanding m/y ?
>
> http://www.jsoftware.com/pipermail/programming/2016-February/044483.html
>
> [2] [Jprogramming] Replace Items
>     http://www.jsoftware.com/pipermail/programming/2016-March/044625.html
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to