Now that the first round of exercises are almost out of the way we can
entertain some utility adverbs.
This round is open in the sense that explicit adverbs are also allowed as
solutions; but, of course, tacit solutions would be better and fixed tacit
solutions would be the best ;)
Exercise 4. Produce the Golden Age Identity adverb a4 (Id): "]: is the
identity adverb, that yields its argument." For example,
Id=. 'a4'f.
1 2 3 Id
1 2 3
* Id
*
1 2 3 * Id 4 5 6
4 10 18
Hint: It is easy using hg or adv.
Exercise 5. Produce the adverb a5 that yields its argument boxed. For
example,
(i.2 3) a5
┌─────┐
│0 1 2│
│3 4 5│
└─────┘
Hint: It is easy using adv.
Exercise 6. Let us assume that u is an arbitrary monadic verb which is
expensive to compute. Produce a6 such that (u a6)Y -: (u ("_1))Y but u
a6 does not repeat the computation of the same items of Y. For example,
cheap=. 'a6'f.
delay=. 6!:3
timer=. 6!:2
timer'delay ("_1) (5$%:2)'
7.07262802
timer'delay cheap (5$%:2)'
1.41460927
(delay cheap -: delay ("_1)) (5$%:2)
1
(([echo) o (+/) cheap ; +/ ("_1))4 3 2 $ i.4
2 5
4 7
┌───┬───┐
│2 5│2 5│
│4 7│4 7│
│2 5│2 5│
│4 7│4 7│
└───┴───┘
Exercise 7. Produce the adverbs a7x0 and a7x1 that provide respectively
monadic and dyadic recursion scope to a tacit verb denoted by the self
reference verb ($:) yielding another tacit verb (a wicked verb, if
necessary). For example,
mRS=. 'a7x0'f. NB. Monadic recursive scope
dRS=. 'a7x1'f. NB. Dyadic recursive scope
fac=. 1:`(] * $:@:<:)@.*
(1 + fac f.mRS)5
121
binomial=. 1:`(%~ * $:&:<:)@.(*@:[)
3 (1 + binomial f.dRS) 7
36
Hint: My solutions are wicked.
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