wrt int1:
([ < {:@]) can be replaced by (<{:)
and
({.@] < [) by (>{.)
so you get
int1=: (>{.) *. (<{:)
which is (IMO) more elegant.
Notice
9 int2 4 9
1
9 int1 4 9
0
since in int2 you use >: instead of >
compare
9 ([: ~:/ >/~)4 9
0
Starting with int1 you get
(>{.) *. (<{:) is equivalent to
(>{.) = (<{:) assumed ({.<: {:)@] , which is equivalent to
(>{.) ~: (>:{:)
If you replace the last expression with the inequivalent
(>:{.) ~: (>:{:) which is equivalent to
[: ~:/ >:/~
R.E. Boss
> -----Oorspronkelijk bericht-----
> Van: [email protected]
> [mailto:[email protected]] Namens Gian Medri
> Verzonden: maandag 18 juni 2012 11:15
> Aan: [email protected]
> Onderwerp: [Jprogramming] J-solutions
>
> Hi!
>
> I shall replace some text in a vector. My function is
> Replace=:13 :'(p{.y),(>1{x),(($>0{x)+p=.I. (>0{x) E. y)}.y'
> Example : ('can be';'is') Replace 'Life can be good'
> Life is good
> I would like to see if there is a better solution, more J-like.
>
> I have also 2 functions for interval:
> 1) int1=:({.@] < [)*.([ < {:@])
> 6 int1 4 9
> 1
> This is very clear how it works.
>
> 2) int2=:[: ~:/ >:/~
> This is more concise and elegant, but I don't understand how it works.
> Can somebody give me an explanation?
> Thanks
> Gian Medri
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm