Did you look at

http://code.jsoftware.com/wiki/Vocabulary/curlylf#Complementary_Indexing_and_Omitted_Axes

? It describes this, including pictures of selectors that produce various results.

Henry Rich

On 11/8/2016 3:27 AM, Skip Cave wrote:
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

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to