Vocabulary/tildeco

From J Wiki
Jump to: navigation, search

>> <<   Down to: Dyad   Back to: Vocabulary Thru to: Dictionary

~: y Nub Sieve

Rank Infinity -- operates on x and y as a whole, by items of y -- WHY IS THIS IMPORTANT?



A Boolean vector with one value per item of y . Which is 1 if the item does not match any previous item.

Therefore, 1s in the result indicate the positions of the unique items of y.

   z=: 'abracadabra'
   ~.z	NB. Nub z - the unique values
abrcd
   ~:z	NB. Nub Sieve z
1 1 1 0 1 0 1 0 0 0 0
   (~:z) # z   NB. another way to get the unique values
abrcd

Common Uses

1. Wherever data is held in 2 parallel lists, Nub Sieve (~:) yields a vector capable of pruning the second list to match the Nub (~.) of the first.

   NAME=: 'Joe' ; 'Bob' ; 'Jim' ; 'Mary' ; 'Jim'
   AGE=: 25 60 32 21 33

   ] z=. ~: NAME	NB. "sieve" to apply to AGE
1 1 1 1 0
   ] NAME=: ~. NAME
+---+---+---+----+
|Joe|Bob|Jim|Mary|
+---+---+---+----+
   ] AGE=: z # AGE
25 60 32 21

Related Primitives

Nub (~. y)


Details

1. ~: y is a member of the i. family. 1. ~: y uses tolerant comparison. Use ~:!.0 y for intolerant comparison. Because of tolerant comparison, the number of 1s in ~: y may depend on the order of the items of y. 1. ~. y is equivalent to (~: y) # y. 1. The result of ~: y is always a list.


x ~: y Not-Equal

Rank 0 0 -- operates on individual atoms of x and y, producing a result of the same shape -- WHY IS THIS IMPORTANT?



The Boolean result of comparing two items, or lists of items, atom by atom.

Use NotMatch (x -.@-: y) to see if two entire nouns are different.

   ]z=: i.5
0 1 2 3 4
   3 ~: z
1 1 1 0 1
   z ~: z
0 0 0 0 0
   z ~: |.z
1 1 0 1 1

Not-Equal (~:) works between boxed items too:

   z=: 'alpha' ; 'bravo' ; 'charlie'
   z ~: |.z
1 0 1
   z ~: <'bravo'
1 0 1

To avoid x~:y giving length error, the Shape Of ($) x and y must follow the rules for Plus (+).


Common Uses

1. To construct criteria for conditional expressions in verb definitions

 if. '.' ~: y do. return. end.
NB. instead of:
 if. -. '.' = y do. return. end.

Related Primitives

Equal (x = y), Larger Than (x > y), Larger Or Equal (x >: y), Less Than (x < y), Less Or Equal (x <: y), Match (x -: y)


More Information

1. See the rules for equality for a discussion of tolerant comparison and nonnumeric arguments.


Use These Combinations

Combinations using x ~: y that have exceptionally good performance include those shown in Searching and Matching Items: Fast List Operations (FLOs), as well as the following:

What it does Type;

Precisions;
Ranks

Syntax Variants;

Restrictions

Benefits;

Bug Warnings

Boolean reductions on infixes Boolean x +./\ y x positive

*. = ~: in place of +.

much faster than alternatives
Mean on infixes integer and floating-point x (+/%#)\ y x positive

*. = ~: in place of +

much faster than alternatives
Boolean reductions on partitions Boolean x +//. y = <. >. +. * *. ~: in place of + avoids building argument cells
Polynomial Multiplication (Boolean) Boolean x ~://.@(*./) y

x ~://.@(+./) y
x +//.@(*./) y
x +//.@(+./) y

avoids building argument cells
Boolean reductions along diagonals Boolean +.//. y *. = ~: < <: > >: in place of +. avoids building argument cells