Rob, Thanks. 'Except' is a very useful tool to keep in my toolbox. Frankly, I think there needs to be a wiki page on the J Software site dedicated to exploring this option in more depth. I would have never found out about this if Raul hadn't pointed it out
The idea is touched on briefly in the page Raul pointed out <http://www.jsoftware.com/help/dictionary/d520.htm>, and also hinted at briefly on the 'from' vocabulary page <http://code.jsoftware.com/wiki/Vocabulary/curlylf>, but I think the subject needs much more explanation. A search for 'except' on the J software site should lead one to a page full of examples as the top search result. The examples should start very simply, and gradually show more & more complex options. Skip Skip Cave Cave Consulting LLC On Tue, Nov 8, 2016 at 2:08 AM, Rob Hodgkinson <[email protected]> wrote: > Hi Skip, > > 2 3 ((<@<@<@[){]) 1 2 3 4 5 > 1 2 5 > > ex=:(<@<@<@[){] > 2 3 ex 1 2 3 4 5 > 1 2 5 > > Rob > > > > On 8 Nov. 2016, at 5:44 pm, Skip Cave <[email protected]> wrote: > > > > Aha! except! I had no idea that from '{' had such a useful option. > > > > (<<< 1 4 5 7) { 2 3 5 7 11 14 56 78 95 > > > > 2 5 7 56 95 NB. Cool! > > > > > > > > If i wanted to make a dyadic verb 'ex' that worked just like the above, > how > > could I do that? > > > > > > 1 4 5 7 ex 2 3 5 7 11 14 56 78 95 > > > > 2 5 7 56 95 > > > > > > > > ex =: [:@<@<@<[{] > > > > 2 3 ex 1 2 3 4 5 > > > > |index error: ex > > > > | 2 3 ex 1 2 3 4 5 > > > > > > Nope! that didn't work. > > > > > > Skip > > > > Skip Cave > > Cave Consulting LLC > > > > On Tue, Nov 8, 2016 at 12:32 AM, Raul Miller <[email protected]> > wrote: > > > >> 2 { 2 3 5 7 11 > >> 5 > >> (<<<2) { 2 3 5 7 11 > >> 2 3 7 11 > >> > >> Look for the word "except" at http://www.jsoftware.com/help/ > >> dictionary/d520.htm > >> > >> Thanks, > >> > >> -- > >> Raul > >> > >> > >> On Tue, Nov 8, 2016 at 12:17 AM, Skip Cave <[email protected]> > >> wrote: > >>> Nice! Xiao-Yong's verb does exactly what I need. > >>> > >>> f=:(] +:@{`[`]} <@<@<@]{[)"_ 0 [:I.2=/\] > >>> > >>> t =. 1 2 2 4 1 5 3 4 4 4 2 3 3 > >>> > >>> f t > >>> > >>> 1 4 4 1 5 3 4 4 4 2 3 3 > >>> > >>> 1 2 2 4 1 5 3 8 4 2 3 3 > >>> > >>> 1 2 2 4 1 5 3 4 8 2 3 3 > >>> > >>> 1 2 2 4 1 5 3 4 4 4 2 6 > >>> > >>> > >>> I can understand [:I.2=/\]. Using I. is the perfect way to find the > >>> indices of the dups. However, the rest of that big infinite-rank tacit > >>> expression to the left must generate each of the reduced items. I'm > >> totally > >>> lost trying to figure that out. Why the zero? Why three <@? I thought [ > >>> represented a left argument, but there isn't a left argument. Any help > is > >>> appreciated. > >>> > >>> > >>> Skip > >>> > >>> Skip Cave > >>> Cave Consulting LLC > >>> > >>> On Mon, Nov 7, 2016 at 10:25 PM, Xiao-Yong Jin <[email protected]> > >>> wrote: > >>> > >>>> So you probably just need this: > >>>> f=:(] +:@{`[`]} <@<@<@]{[)"_ 0 [:I.2=/\] > >>>> or really the adverb > >>>> a=:1 :'u@(] +:@{`[`]} <@<@<@]{[)"_ 0 [:I.2=/\]' > >>>> > >>>> You may find different solutions if you abstract your problem > >> differently. > >>>> > >>>>> On Nov 7, 2016, at 9:30 PM, Skip Cave <[email protected]> > >> wrote: > >>>>> > >>>>> Very interesting. Quite a difference in space and time usage, not to > >>>>> mention length of the tacit code. > >>>>> > >>>>> For my application, a rank 0 or 1 in the summed result isn't all that > >>>>> critical. As long as the contents of each box can be used in further > >>>>> arithmetic and Boolean operations (e.g. it's not text), then I'm ok. > >>>>> > >>>>> > >>>>> It looks like nouns with ranks 0 or 1 don't affect the outcome of > >> simple > >>>>> arithmetic operations: > >>>>> > >>>>> > >>>>> ($4);($,4);(4=,4);(1+4);(1+,4);((1+4)=1+,4);($1+4);($1+,4) > >>>>> > >>>>> ┌┬─┬─┬─┬─┬─┬┬─┐ > >>>>> > >>>>> ││1│1│5│5│1││1│ > >>>>> > >>>>> └┴─┴─┴─┴─┴─┴┴─┘ > >>>>> > >>>>> The only time the difference becomes an issue: > >>>>> > >>>>> ($4)=($,4) > >>>>> > >>>>> |length error > >>>>> > >>>>> | ($4) =($,4) > >>>>> But I don't care about this. > >>>>> > >>>>> Actually, Mike Day spotted what I was really trying to attempt. > >>>>> The original starting vector is: > >>>>> > >>>>> n =: 1 2 2 4 1 5 3 4 4 4 2 3 3 > >>>>> > >>>>> Then I box at each possible pair of integers using an infix > >>>> sliding-window > >>>>> on each pair of integers. This sliding box scheme was just to > identify > >>>> all > >>>>> the duped pairs in the original vector. > >>>>> > >>>>> ]N =: 2<\pp > >>>>> > >>>>> ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ > >>>>> > >>>>> │1 2│2 2│2 4│4 1│1 5│5 3│3 4│4 4│4 4│4 2│2 3│3 3│ > >>>>> > >>>>> └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ > >>>>> > >>>>> > >>>>> What I ultimately wanted is a verb that will replace the duped pairs > >> in > >>>> the > >>>>> *original* un-boxed vector, one at a time: > >>>>> > >>>>> n =: 1 2 2 4 1 5 3 4 4 4 2 3 3 > >>>>> > >>>>> f n > >>>>> > >>>>> 1 4 4 1 5 3 4 4 4 2 3 3 > >>>>> > >>>>> 1 2 2 4 1 5 3 8 4 2 3 3 > >>>>> > >>>>> 1 2 2 4 1 5 3 4 8 2 3 3 > >>>>> > >>>>> 1 2 2 4 1 5 3 4 4 4 2 6 > >>>>> > >>>>> Of course, the final row lengths will be one shorter that the > original > >>>> row > >>>>> length. > >>>>> > >>>>> Skip > >>>>> ------------------------------------------------------------ > >> ---------- > >>>>> 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
