FinnAPL idiom library: Difference between revisions

Jump to navigation Jump to search
5,947 bytes added ,  06:10, 14 August 2020
m
Miraheze>Marshall
(Transfer from old aplwiki.com)
 
(13 intermediate revisions by 5 users not shown)
Line 1: Line 1:
'''Note:''' The idioms in the FinnAPL idiom library don't make use of some of the newer features available in second-generation APLs. Nowadays there is sometimes an easier way of achieving the same thing in APL2. Contributions and updates welcomed!
[[File:FinnAPL.jpg|thumb|The original FinnAPL idiom library]]


The FinnAPL Idiom Library is a very valuable resource for APL programmers. It contains a collection of over 700 one-line APL idioms to achieve a large variety of tasks.
The '''[[FinnAPL]] idiom library''' contains a collection of over 700 one-line APL idioms to accomplish a large variety of tasks. It was first presented at the 1984 [[APL conference]] in Helsinki, Finland. The huge contribution of the Finnish APL Association is gratefully acknowledged.  


The following web page is based on the library listing at [http://www.finnapl.fi/idilib.htm www.finnapl.fi/idilib.htm], but has been converted to Unicode UTF-8 format to allow the idioms to be cut-and-pasted into a variety of modern APLs.
This listing mainly suffers from two issues:
* Due to its age, it doesn't make use of modern APL features which can provide a simpler solution. (However, a simple-looking expression which uses [[nested arrays]] might be far more computationally expensive than a longer, more involved solution which only uses simple arrays.)
* It can be hard to find what one is looking for, both because computing terminology has changed, and because pinpointing the exact term can be difficult.  


The huge contribution of the Finnish APL Association is gratefully acknowledged.  
[[APLcart]] includes all of the below library, updated to use the latest language features, and in an easily searchable format that includes modern day synonyms.


== Interpreting an entry in the Idiom Library ==
== Interpreting an entry in the Idiom Library ==
Line 18: Line 20:
The entry includes a brief description of what the idiom does, which is followed by the expression <source lang=apl inline>X←A1; Y←A1</source> which specifies the types and ranks of the arguments:
The entry includes a brief description of what the idiom does, which is followed by the expression <source lang=apl inline>X←A1; Y←A1</source> which specifies the types and ranks of the arguments:


* A : Any [Numeric, Character or Boolean]
{|class=wikitable
* D : Numeric
|<source lang=apl inline>A</source>||Any [Numeric, Character or Boolean]
* I : Integer
|-
* C : Character
|<source lang=apl inline>D</source>||Numeric
* B : Boolean
|-
|<source lang=apl inline>I</source>||Integer
|-
|<source lang=apl inline>C</source>||Character
|-
|<source lang=apl inline>B</source>||Boolean
|}


A number following the type indicates the rank, e.g.  
A number following the type indicates the rank, e.g.  
* A0: Any scalar (rank 0)
{|class=wikitable
* A1: Any vector (rank 1)
|<source lang=apl inline>A0</source>||Any scalar (rank 0)
* A2: Any matrix (rank 2)
|-
 
|<source lang=apl inline>A1</source>||Any vector (rank 1)
Thus the idiom shown expects two character or numeric vectors, X and Y. It will find the index position of each element of Y in X, for example:
|-
|<source lang=apl inline>A2</source>||Any matrix (rank 2)
|}
Thus the idiom shown expects two character or numeric vectors, <source lang=apl inline>X</source> and <source lang=apl inline>Y</source>. It will find the index position of each element of <source lang=apl inline>Y</source> in <source lang=apl inline>X</source>, for example:


<source lang=apl>
<source lang=apl>
Line 40: Line 51:
</source>
</source>
   
   
In this example, the first 'o' character in Y occurs in at index position 13 in X, the second one occurs at position 20, and the third and fourth 'o' characters are not present in X.
In this example, the first 'o' character in <source lang=apl inline>Y</source> occurs in at index position 13 in <source lang=apl inline>X</source>, the second one occurs at position 20, and the third and fourth 'o' characters are not present in <source lang=apl inline>X</source>.


For a more detailed description of how this particular idiom works, see [http://www.sudleyplace.com/APL/AnatomyOfAnIdiom.ahtml this analysis] by Bob Smith.
For a more detailed description of how this particular idiom works, see [http://www.sudleyplace.com/APL/AnatomyOfAnIdiom.ahtml this analysis] by Bob Smith.
== Idiom Library Listing ==
== Idiom Library Listing ==


=== Grade Up ⍋ ===
=== Grade Up <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|1. || Progressive index of (without replacement) ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
|rowspan=2|1. || Progressive index of (without replacement) ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
Line 57: Line 66:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⌊.5×(⍋⍋X)+⌽⍋⍋⌽X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⌊.5×(⍋⍋X)+⌽⍋⍋⌽X</source>
|-
|-
|rowspan=2| 3. || Cumulative maxima (`⌈\`) of subvectors of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←D1</source>
|rowspan=2| 3. || Cumulative maxima (<source lang=apl inline>⌈\</source>) of subvectors of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←D1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>Y[A⍳⌈\A←⍋A[⍋(+\X)[A←⍋Y]]]</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>Y[A⍳⌈\A←⍋A[⍋(+\X)[A←⍋Y]]]</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 4. || Cumulative minima (`⌊\`) of subvectors of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←D1</source>
|rowspan=2| 4. || Cumulative minima (<source lang=apl inline>⌊\</source>) of subvectors of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←D1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>Y[A⍳⌈\A←⍋A[⍋(+\X)[A←⍒Y]]]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>Y[A⍳⌈\A←⍋A[⍋(+\X)[A←⍒Y]]]</source>
Line 71: Line 80:
|rowspan=2| 6. || Test if X and Y are permutations of each other ||style="text-align: right;"|<source lang=apl inline>X←D1; Y←D1</source>
|rowspan=2| 6. || Test if X and Y are permutations of each other ||style="text-align: right;"|<source lang=apl inline>X←D1; Y←D1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>Y[⍋Y]^.=X[⍋X]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>Y[⍋Y].=X[⍋X]</source>
|-
|-
|rowspan=2| 7. || Test if X is a permutation vector ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|rowspan=2| 7. || Test if X is a permutation vector ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X^.=⍋⍋X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X∧.=⍋⍋X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 8. || Grade up (``) for sorting subvectors of Y having lengths X ||style="text-align: right;"|<source lang=apl inline>Y←D1; X←I1; (⍴Y) ←→ +/X</source>
|rowspan=2| 8. || Grade up (<source lang=apl inline></source>) for sorting subvectors of Y having lengths X ||style="text-align: right;"|<source lang=apl inline>Y←D1; X←I1; (⍴Y) ←→ +/X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>A[⍋(+\(⍳⍴Y)∊+\⎕IO,X)[A←⍋Y]]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>A[⍋(+\(⍳⍴Y)∊+\⎕IO,X)[A←⍋Y]]</source>
Line 89: Line 98:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>Y[A[X/⍋(+\X)[A←⍋Y]]]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>Y[A[X/⍋(+\X)[A←⍋Y]]]</source>
|-
|-
|rowspan=2| 11. || Grade up (``) for sorting subvectors of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←D1</source>
|rowspan=2| 11. || Grade up (<source lang=apl inline></source>) for sorting subvectors of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←D1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>A[⍋(+\X)[A←⍋Y]]</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>A[⍋(+\X)[A←⍋Y]]</source>
Line 125: Line 134:
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⍋⍋X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⍋⍋X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 20. || Grade down (``) for sorting subvectors of Y having lengths X ||style="text-align: right;"|<source lang=apl inline>Y←D1; X←I1; (⍴Y) ←→ +/X</source>
|rowspan=2| 20. || Grade down (<source lang=apl inline></source>) for sorting subvectors of Y having lengths X ||style="text-align: right;"|<source lang=apl inline>Y←D1; X←I1; (⍴Y) ←→ +/X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>A[⍋(+\(⍳⍴Y)∊+\⎕IO,X)[A←⍒Y]]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>A[⍋(+\(⍳⍴Y)∊+\⎕IO,X)[A←⍒Y]]</source>
Line 133: Line 142:
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>Y[A[X/⍋(+\X)[A←⍒Y]]]</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>Y[A[X/⍋(+\X)[A←⍒Y]]]</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 22. || Grade down (``) for sorting subvectors of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←D1</source>
|rowspan=2| 22. || Grade down (<source lang=apl inline></source>) for sorting subvectors of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←D1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>A[⍋(+\X)[A←⍒Y]]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>A[⍋(+\X)[A←⍒Y]]</source>
Line 163: Line 172:
|rowspan=2| 29. || Test if X is a permutation vector ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|rowspan=2| 29. || Test if X is a permutation vector ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X[⍋X]^.=⍳⍴X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X[⍋X].=⍳⍴X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 30. || Sorting a matrix into lexicographic order ||style="text-align: right;"|<source lang=apl inline>X←D2</source>
|rowspan=2| 30. || Sorting a matrix into lexicographic order ||style="text-align: right;"|<source lang=apl inline>X←D2</source>
Line 177: Line 186:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>A[(B/C)-⍴Y]←B/+\~B←(⍴Y)<C←⍋Y,X+A←0×X ⋄ A</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>A[(B/C)-⍴Y]←B/+\~B←(⍴Y)<C←⍋Y,X+A←0×X ⋄ A</source>
|-
|-
|rowspan=2| 33. || Rotate first elements (`1⌽`) of subvectors of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←A1</source>
|rowspan=2| 33. || Rotate first elements (<source lang=apl inline>1⌽</source>) of subvectors of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←A1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>Y[⍋X++\X]</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>Y[⍋X++\X]</source>
Line 185: Line 194:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(X,'''')[(⎕IO+⍴X)⌊⍋(⍳⍴X),(''''=X)/⍳⍴X]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(X,'''')[(⎕IO+⍴X)⌊⍋(⍳⍴X),(''''=X)/⍳⍴X]</source>
|-
|-
|rowspan=2| 35. || Inserting Y `*`'s into vector X after indices G ||style="text-align: right;"|<source lang=apl inline>X←C1; Y←I0; G←I1</source>
|rowspan=2| 35. || Inserting Y <source lang=apl inline>*</source>'s into vector X after indices G ||style="text-align: right;"|<source lang=apl inline>X←C1; Y←I0; G←I1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(X,'*')[(⎕IO+⍴X)⌊⍋(⍳⍴X),(Y×⍴G)⍴G]</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(X,'*')[(⎕IO+⍴X)⌊⍋(⍳⍴X),(Y×⍴G)⍴G]</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 36. || Median ||style="text-align: right;"|<source lang=apl inline>X←D1</source>
|rowspan=2| 36. || Median<ref>Note: it doesn't average the middle two elements as per median's definition. A more correct idiomatic expression is <source lang=apl inline>0.5×+/X[(⍋X)[|⌈¯0.5 0.5×1+⍴X]]</source></ref> ||style="text-align: right;"|<source lang=apl inline>X←D1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>X[(⍋X)[⌈.5×⍴X]]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>X[(⍋X)[⌈.5×⍴X]]</source>
Line 242: Line 251:
|}
|}


=== Grade Down ⍒ ===
=== Grade Down <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|49. || Reverse vector X on condition Y ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←B0</source>
|rowspan=2|49. || Reverse vector X on condition Y ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←B0</source>
Line 252: Line 261:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>X[⍒+⌿A<.-⍉A←X,0;]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>X[⍒+⌿A<.-⍉A←X,0;]</source>
|-
|-
|rowspan=2| 52. || Reversal (``) of subvectors of X having lengths Y ||style="text-align: right;"|<source lang=apl inline>X←D1; Y←I1</source>
|rowspan=2| 52. || Reversal (<source lang=apl inline></source>) of subvectors of X having lengths Y ||style="text-align: right;"|<source lang=apl inline>X←D1; Y←I1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X[⌽⍒+\(⍳⍴X)∊+\⎕IO,Y]</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X[⌽⍒+\(⍳⍴X)∊+\⎕IO,Y]</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 53. || Reversal (``) of subvectors of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←A1</source>
|rowspan=2| 53. || Reversal (<source lang=apl inline></source>) of subvectors of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←A1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>Y[⌽⍒+\X]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>Y[⌽⍒+\X]</source>
Line 281: Line 290:
|}
|}


=== Matrix Inversion / Matrix Division ⌹ ===
=== Matrix Inversion / Matrix Division <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|60. || Interpolated value of series (X,Y) at G ||style="text-align: right;"|<source lang=apl inline>X←D1; Y←D1; G←D0</source>
|rowspan=2|60. || Interpolated value of series (X,Y) at G ||style="text-align: right;"|<source lang=apl inline>X←D1; Y←D1; G←D0</source>
Line 308: Line 317:
|}
|}


=== Decode ⊥ ===
=== Decode <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|66. || Binary format of decimal number X ||style="text-align: right;"|<source lang=apl inline>X←I0</source>
|rowspan=2|66. || Binary format of decimal number X ||style="text-align: right;"|<source lang=apl inline>X←I0</source>
Line 336: Line 345:
|rowspan=2| 73. || Removing duplicate rows ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|rowspan=2| 73. || Removing duplicate rows ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>((A⍳A)=⍳⍴A←2⊥X^.=⍉X)⌿X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>((A⍳A)=⍳⍴A←2⊥X∧.=⍉X)⌿X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 74. || Conversion from hexadecimal to decimal ||style="text-align: right;"|<source lang=apl inline>X←C</source>
|rowspan=2| 74. || Conversion from hexadecimal to decimal ||style="text-align: right;"|<source lang=apl inline>X←C</source>
Line 419: Line 428:
|}
|}


=== Encode ⊤ ===
=== Encode <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=4|94. || Conversion from decimal to hexadecimal (`X=1..255`) ||style="text-align: right;"|<source lang=apl inline>X←I</source>
|rowspan=4|94. || Conversion from decimal to hexadecimal (<source lang=apl inline>X=1..255</source>) ||style="text-align: right;"|<source lang=apl inline>X←I</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⍉'0123456789ABCDEF'[⎕IO+((⌈⌈/16⍟,X)⍴16)⊤X]</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⍉'0123456789ABCDEF'[⎕IO+((⌈⌈/16⍟,X)⍴16)⊤X]</source>
Line 445: Line 454:
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>1 0⍕10 10⊤1-⎕IO-⍳X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>1 0⍕10 10⊤1-⎕IO-⍳X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 99. || Conversion of characters to hexadecimal representation (`⎕AV`) ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|rowspan=2| 99. || Conversion of characters to hexadecimal representation (<source lang=apl inline>⎕AV</source>) ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>,' ',⍉'0123456789ABCDEF'[⎕IO+16 16⊤-⎕IO-⎕AV⍳X]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>,' ',⍉'0123456789ABCDEF'[⎕IO+16 16⊤-⎕IO-⎕AV⍳X]</source>
Line 455: Line 464:
|rowspan=2| 101. || Index pairs of saddle points ||style="text-align: right;"|<source lang=apl inline>X←D2</source>
|rowspan=2| 101. || Index pairs of saddle points ||style="text-align: right;"|<source lang=apl inline>X←D2</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⎕IO+(⍴X)⊤-⎕IO-(,(X=(⍴X)⍴⌈⌿X)^X=⍉(⌽⍴X)⍴⌊/X)/⍳×/⍴X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⎕IO+(⍴X)⊤-⎕IO-(,(X=(⍴X)⍴⌈⌿X)∧X=⍉(⌽⍴X)⍴⌊/X)/⍳×/⍴X</source>
|-
|-
|rowspan=2| 102. || Changing connectivity matrix X to a connectivity list ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
|rowspan=2| 102. || Changing connectivity matrix X to a connectivity list ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
Line 473: Line 482:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⎕IO+(⍴X)⊤(-⎕IO)+(,X∊Y)/⍳⍴,X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⎕IO+(⍴X)⊤(-⎕IO)+(,X∊Y)/⍳⍴,X</source>
|-
|-
|rowspan=2| 106. || All pairs of elements of `⍳X` and `⍳Y` ||style="text-align: right;"|<source lang=apl inline>X←I0; Y←I0</source>
|rowspan=2| 106. || All pairs of elements of <source lang=apl inline>⍳X</source> and <source lang=apl inline>⍳Y</source> ||style="text-align: right;"|<source lang=apl inline>X←I0; Y←I0</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⎕IO+(X,Y)⊤(⍳X×Y)-⎕IO</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⎕IO+(X,Y)⊤(⍳X×Y)-⎕IO</source>
Line 498: Line 507:
|}
|}


=== Logarithm ⍟ ===
=== Logarithm <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|112. || Number of decimals of elements of X ||style="text-align: right;"|<source lang=apl inline>X←D1</source>
|rowspan=2|112. || Number of decimals of elements of X ||style="text-align: right;"|<source lang=apl inline>X←D1</source>
Line 504: Line 513:
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⌊10⍟(⍎('.'≠A)/A←⍕X)÷X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⌊10⍟(⍎('.'≠A)/A←⍕X)÷X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 113. || Number of sortable columns at a time using `` and alphabet X ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|rowspan=2| 113. || Number of sortable columns at a time using <source lang=apl inline></source> and alphabet X ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⌊(1+⍴X)⍟2*(A=¯1+A←2*⍳128)⍳1</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⌊(1+⍴X)⍟2*(A=¯1+A←2*⍳128)⍳1</source>
Line 529: Line 538:
|}
|}


=== Branch → ===
=== Branch <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|119. || Case structure according to key vector G ||style="text-align: right;"|<source lang=apl inline>X←A0; Y←I1; G←A1</source>
|rowspan=2|119. || Case structure according to key vector G ||style="text-align: right;"|<source lang=apl inline>X←A0; Y←I1; G←A1</source>
Line 537: Line 546:
|rowspan=2| 120. || Forming a transitive closure ||style="text-align: right;"|<source lang=apl inline>X←B2</source>
|rowspan=2| 120. || Forming a transitive closure ||style="text-align: right;"|<source lang=apl inline>X←B2</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>→⎕LC⌈⍳∨/,(X←X∨X∨.^X)≠+X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>→⎕LC⌈⍳∨/,(X←X∨X∨.∧X)≠+X</source>
|-
|-
|rowspan=2| 121. || Case structure with integer switch ||style="text-align: right;"|<source lang=apl inline>X←I0; Y←I1</source>
|rowspan=2| 121. || Case structure with integer switch ||style="text-align: right;"|<source lang=apl inline>X←I0; Y←I1</source>
Line 576: Line 585:
|}
|}


=== Execute ⍎ ===
=== Execute <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|132. || Test for symmetricity of matrix X ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|rowspan=2|132. || Test for symmetricity of matrix X ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⍎⍎'1','↑↓'[⎕IO+^/(⍴X)=⌽⍴X],'''0~0∊X=⍉X'''</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⍎⍎'1','↑↓'[⎕IO+/(⍴X)=⌽⍴X],'''0~0∊X=⍉X'''</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 133. || Using a variable named according to X ||style="text-align: right;"|<source lang=apl inline>X←A0; Y←A</source>
|rowspan=2| 133. || Using a variable named according to X ||style="text-align: right;"|<source lang=apl inline>X←A0; Y←A</source>
Line 586: Line 595:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⍎'VAR',(⍕X),'←Y'</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⍎'VAR',(⍕X),'←Y'</source>
|-
|-
|rowspan=2| 134. || Rounding to `⎕PP` precision ||style="text-align: right;"|<source lang=apl inline>X←D1</source>
|rowspan=2| 134. || Rounding to <source lang=apl inline>⎕PP</source> precision ||style="text-align: right;"|<source lang=apl inline>X←D1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⍎⍕X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⍎⍕X</source>
Line 608: Line 617:
|rowspan=2| 139. || Test for symmetricity of matrix X ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|rowspan=2| 139. || Test for symmetricity of matrix X ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⍎(¯7*A^.=⌽A←⍴X)↑'0~0∊X=⍉X'</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⍎(¯7*A∧.=⌽A←⍴X)↑'0~0∊X=⍉X'</source>
|-
|-
|rowspan=2| 140. || Execution of expression X with default value Y ||style="text-align: right;"|<source lang=apl inline>X←D1</source>
|rowspan=2| 140. || Execution of expression X with default value Y ||style="text-align: right;"|<source lang=apl inline>X←D1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⍎((X^.=' ')/'Y'),X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⍎((X∧.=' ')/'Y'),X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 141. || Changing X if a new input value is given ||style="text-align: right;"|<source lang=apl inline>X←A</source>
|rowspan=2| 141. || Changing X if a new input value is given ||style="text-align: right;"|<source lang=apl inline>X←A</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>X←⍎,((2↑'X'),' ',[.5]A)[⎕IO+~' '^.=A←⍞;]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>X←⍎,((2↑'X'),' ',[.5]A)[⎕IO+~' '.=A←⍞;]</source>
|-
|-
|rowspan=2| 142. || Definite integral of F(X) in range Y with G steps ('X'∊F) ||style="text-align: right;"|<source lang=apl inline>F←A1; G←D0; Y←D1; ⍴Y ←→ 2</source>
|rowspan=2| 142. || Definite integral of F(X) in range Y with G steps ('X'∊F) ||style="text-align: right;"|<source lang=apl inline>F←A1; G←D0; Y←D1; ⍴Y ←→ 2</source>
Line 624: Line 633:
|rowspan=2| 143. || Test if numeric and conversion to numeric form ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|rowspan=2| 143. || Test if numeric and conversion to numeric form ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>1↓⍎'0 ',(^/X∊' 0123456789')/X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>1↓⍎'0 ',(/X∊' 0123456789')/X</source>
|-
|-
|rowspan=2| 144. || Tests the social security number (Finnish) ||style="text-align: right;"|<source lang=apl inline>Y←'01...9ABC...Z'; 10=⍴X</source>
|rowspan=2| 144. || Tests the social security number (Finnish) ||style="text-align: right;"|<source lang=apl inline>Y←'01...9ABC...Z'; 10=⍴X</source>
Line 667: Line 676:
|}
|}


=== Format ⍕ ===
=== Format <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|154. || Numeric headers (elements of X) for rows of table Y ||style="text-align: right;"|<source lang=apl inline>X←D1; Y←A2</source>
|rowspan=2|154. || Numeric headers (elements of X) for rows of table Y ||style="text-align: right;"|<source lang=apl inline>X←D1; Y←A2</source>
Line 689: Line 698:
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(⍴A)⍴B\(B←,('0'≠A)∨' '≠¯1⌽A)/,A←' ',⍕X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(⍴A)⍴B\(B←,('0'≠A)∨' '≠¯1⌽A)/,A←' ',⍕X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 159. || Number of digit positions in scalar X (depends on `⎕PP`) ||style="text-align: right;"|<source lang=apl inline>X←D0</source>
|rowspan=2| 159. || Number of digit positions in scalar X (depends on <source lang=apl inline>⎕PP</source>) ||style="text-align: right;"|<source lang=apl inline>X←D0</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⍴⍕X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⍴⍕X</source>
Line 706: Line 715:
|}
|}


=== Roll / Deal ? ===
=== Roll / Deal <source lang=apl inline>?</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|164. || Y-shaped array of random numbers within ( X[1],X[2] ] ||style="text-align: right;"|<source lang=apl inline>X←I1; Y←I1</source>
|rowspan=2|164. || Y-shaped array of random numbers within ( X[1],X[2] ] ||style="text-align: right;"|<source lang=apl inline>X←I1; Y←I1</source>
Line 716: Line 725:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(~X∊' .,:;?''')/X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(~X∊' .,:;?''')/X</source>
|-
|-
|rowspan=2| 166. || Choosing Y objects out of `⍳X` with replacement (roll) ||style="text-align: right;"|<source lang=apl inline>Y←I; X←I</source>
|rowspan=2| 166. || Choosing Y objects out of <source lang=apl inline>⍳X</source> with replacement (roll) ||style="text-align: right;"|<source lang=apl inline>Y←I; X←I</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>?Y⍴X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>?Y⍴X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 167. || Choosing Y objects out of `⍳X` without replacement (deal) ||style="text-align: right;"|<source lang=apl inline>X←I0; Y←I0</source>
|rowspan=2| 167. || Choosing Y objects out of <source lang=apl inline>⍳X</source> without replacement (deal) ||style="text-align: right;"|<source lang=apl inline>X←I0; Y←I0</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>Y?X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>Y?X</source>
|}
|}


=== Geometrical Functions ○ ===
=== Geometrical Functions <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|168. || Arctan Y÷X ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D</source>
|rowspan=2|168. || Arctan Y÷X ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D</source>
Line 744: Line 753:
|}
|}


=== Factorial / Binomial ! ===
=== Factorial / Binomial <source lang=apl inline>!</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|172. || Number of permutations of X objects taken Y at a time ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D</source>
|rowspan=2|172. || Number of permutations of X objects taken Y at a time ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D</source>
Line 779: Line 788:
|}
|}


=== Index Of ⍳ ===
=== Index Of <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|180. || Removing elements Y from beginning and end of vector X ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A</source>
|rowspan=2|180. || Removing elements Y from beginning and end of vector X ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A</source>
Line 795: Line 804:
|rowspan=2| 184. || First occurrence of string X in string Y ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
|rowspan=2| 184. || First occurrence of string X in string Y ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(^⌿(¯1+⍳⍴X)⌽X∘.=Y)⍳1</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(∧⌿(¯1+⍳⍴X)⌽X∘.=Y)⍳1</source>
|-
|-
|rowspan=2| 185. || Removing duplicate rows ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|rowspan=2| 185. || Removing duplicate rows ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>((A⍳A)=⍳⍴A←⎕IO++⌿^⍀X∨.≠⍉X)⌿X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>((A⍳A)=⍳⍴A←⎕IO++⌿∧⍀X∨.≠⍉X)⌿X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 186. || First occurrence of string X in matrix Y ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A2; ¯1↑⍴Y←→⍴X</source>
|rowspan=2| 186. || First occurrence of string X in matrix Y ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A2; ¯1↑⍴Y←→⍴X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(Y^.=X)⍳1</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(Y∧.=X)⍳1</source>
|-
|-
|rowspan=2| 187. || Indices of ones in logical vector X ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|rowspan=2| 187. || Indices of ones in logical vector X ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
Line 827: Line 836:
|rowspan=2| 192. || Test if each element of X occurs only once ||style="text-align: right;"|<source lang=apl inline>X←A1</source>
|rowspan=2| 192. || Test if each element of X occurs only once ||style="text-align: right;"|<source lang=apl inline>X←A1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>^/(X⍳X)=⍳⍴X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>/(X⍳X)=⍳⍴X</source>
|-
|-
|rowspan=2| 193. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←A1</source>
|rowspan=2| 193. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←A1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>^/⎕IO=X⍳X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>/⎕IO=X⍳X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 194. || Interpretation of roman numbers ||style="text-align: right;"|<source lang=apl inline>X←A</source>
|rowspan=2| 194. || Interpretation of roman numbers ||style="text-align: right;"|<source lang=apl inline>X←A</source>
Line 845: Line 854:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(1-(⌽' '≠X)⍳1)↓X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(1-(⌽' '≠X)⍳1)↓X</source>
|-
|-
|rowspan=2| 198. || Index of last occurrence of Y in X (`⎕IO-1` if not found) ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A</source>
|rowspan=2| 198. || Index of last occurrence of Y in X (<source lang=apl inline>⎕IO-1</source> if not found) ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>((¯1 1)[2×⎕IO]+⍴X)-(⌽X)⍳Y</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>((¯1 1)[2×⎕IO]+⍴X)-(⌽X)⍳Y</source>
Line 930: Line 939:
|}
|}


=== Outer Product ∘.! ∘.⌈ ∘.| ===
=== Outer Product <source lang=apl inline>∘.!</source> <source lang=apl inline>∘.⌈</source> <source lang=apl inline>∘.|</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|219. || Pascal's triangle of order X (binomial coefficients) ||style="text-align: right;"|<source lang=apl inline>X←I0</source>
|rowspan=2|219. || Pascal's triangle of order X (binomial coefficients) ||style="text-align: right;"|<source lang=apl inline>X←I0</source>
Line 946: Line 955:
|rowspan=2| 222. || Greatest common divisor of elements of X ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|rowspan=2| 222. || Greatest common divisor of elements of X ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⌈/(^/0=A∘.|X)/A←⍳⌊/X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⌈/(/0=A∘.|X)/A←⍳⌊/X</source>
|-
|-
|rowspan=2| 223. || Divisibility table ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|rowspan=2| 223. || Divisibility table ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
Line 957: Line 966:
|}
|}


=== Outer Product ∘.* ∘.× ∘.- ∘.+ ===
=== Outer Product <source lang=apl inline>∘.*</source> <source lang=apl inline>∘.×</source> <source lang=apl inline>∘.-</source> <source lang=apl inline>∘.+</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|225. || Compound interest for principals Y at rates G % in times X ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D; G←D</source>
|rowspan=2|225. || Compound interest for principals Y at rates G % in times X ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D; G←D</source>
Line 997: Line 1,006:
|rowspan=2| 235. || Occurrences of string X in string Y ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
|rowspan=2| 235. || Occurrences of string X in string Y ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(Y[A∘.+¯1+⍳⍴X]^.=X)/A←(A=1↑X)/⍳⍴A←(1-⍴X)↓Y</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(Y[A∘.+¯1+⍳⍴X].=X)/A←(A=1↑X)/⍳⍴A←(1-⍴X)↓Y</source>
|-
|-
|rowspan=2| 236. || Sum of common parts of matrices (matrix sum) ||style="text-align: right;"|<source lang=apl inline>X←D2; Y←D2</source>
|rowspan=2| 236. || Sum of common parts of matrices (matrix sum) ||style="text-align: right;"|<source lang=apl inline>X←D2; Y←D2</source>
Line 1,040: Line 1,049:
|}
|}


=== Outer Product ∘.<∘.≤ ∘.≥ ∘.> ===
=== Outer Product <source lang=apl inline>∘.<</source> <source lang=apl inline>∘.≤</source>  <source lang=apl inline>∘.≥</source>  <source lang=apl inline>∘.></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|247. || Matrix with X[i] trailing zeroes on row i ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|rowspan=2|247. || Matrix with X[i] trailing zeroes on row i ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
Line 1,052: Line 1,061:
|rowspan=2| 249. || Distribution of X into intervals between Y ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D1</source>
|rowspan=2| 249. || Distribution of X into intervals between Y ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>+/((¯1↓Y)∘.≤X)^(1↓Y)∘.>X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>+/((¯1↓Y)∘.≤X)(1↓Y)∘.>X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 250. || Histogram (distribution barchart; down the page) ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|rowspan=2| 250. || Histogram (distribution barchart; down the page) ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
Line 1,064: Line 1,073:
|rowspan=2| 252. || Test if X is an upper triangular matrix ||style="text-align: right;"|<source lang=apl inline>X←D2</source>
|rowspan=2| 252. || Test if X is an upper triangular matrix ||style="text-align: right;"|<source lang=apl inline>X←D2</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>^/,(0≠X)≤A∘.≤A←⍳1↑⍴X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>/,(0≠X)≤A∘.≤A←⍳1↑⍴X</source>
|-
|-
|rowspan=2| 253. || Number of ?s intersecting ?s (X=starts, Y=stops) ||style="text-align: right;"|<source lang=apl inline>X←D1; Y←D1</source>
|rowspan=2| 253. || Number of ?s intersecting ?s (X=starts, Y=stops) ||style="text-align: right;"|<source lang=apl inline>X←D1; Y←D1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>+/A^⍉A←X∘.≤Y</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>+/A∧⍉A←X∘.≤Y</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 254. || Contour levels Y at points with altitudes X ||style="text-align: right;"|<source lang=apl inline>X←D0; Y←D1</source>
|rowspan=2| 254. || Contour levels Y at points with altitudes X ||style="text-align: right;"|<source lang=apl inline>X←D0; Y←D1</source>
Line 1,104: Line 1,113:
|rowspan=2| 263. || Test if X is a lower triangular matrix ||style="text-align: right;"|<source lang=apl inline>X←D2</source>
|rowspan=2| 263. || Test if X is a lower triangular matrix ||style="text-align: right;"|<source lang=apl inline>X←D2</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>^/,(0≠X)≤A∘.≥A←⍳1↑⍴X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>/,(0≠X)≤A∘.≥A←⍳1↑⍴X</source>
|-
|-
|rowspan=2| 264. || Test if X is within range [ Y[1],Y[2] ) ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D1</source>
|rowspan=2| 264. || Test if X is within range [ Y[1],Y[2] ) ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D1</source>
Line 1,135: Line 1,144:
|}
|}


=== Outer Product ∘.≠ ∘.= ===
=== Outer Product <source lang=apl inline>∘.≠</source>  <source lang=apl inline>∘.=</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|271. || Indices of elements of Y in corr. rows of X (`X[i;]⍳Y[i;]`) ||style="text-align: right;"|<source lang=apl inline>X←A2; Y←A2</source>
|rowspan=2|271. || Indices of elements of Y in corr. rows of X (<source lang=apl inline>X[i;]⍳Y[i;]</source>) ||style="text-align: right;"|<source lang=apl inline>X←A2; Y←A2</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>1++/^\1 2 1 3⍉Y∘.≠X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>1++/\1 2 1 3⍉Y∘.≠X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 273. || Indicating equal elements of X as a logical matrix ||style="text-align: right;"|<source lang=apl inline>X←A1</source>
|rowspan=2| 273. || Indicating equal elements of X as a logical matrix ||style="text-align: right;"|<source lang=apl inline>X←A1</source>
Line 1,145: Line 1,154:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⍉X∘.=(1 1⍉<\X∘.=X)/X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⍉X∘.=(1 1⍉<\X∘.=X)/X</source>
|-
|-
|rowspan=2| 275. || Changing connection matrix X (`¯1 → 1`) to a node matrix ||style="text-align: right;"|<source lang=apl inline>X←I2</source>
|rowspan=2| 275. || Changing connection matrix X (<source lang=apl inline>¯1 → 1</source>) to a node matrix ||style="text-align: right;"|<source lang=apl inline>X←I2</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(1 ¯1∘.=⍉X)+.×⍳1↑⍴⎕←X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(1 ¯1∘.=⍉X)+.×⍳1↑⍴⎕←X</source>
Line 1,163: Line 1,172:
|rowspan=2| 279. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|rowspan=2| 279. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>∨/^/0 1∘.=X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>∨//0 1∘.=X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 280. || Test if elements of X belong to corr. row of Y (`X[i;]∊Y[i;]`) ||style="text-align: right;"|<source lang=apl inline>X←A2; Y←A2; 1↑⍴X←→1↑⍴Y</source>
|rowspan=2| 280. || Test if elements of X belong to corr. row of Y (<source lang=apl inline>X[i;]∊Y[i;]</source>) ||style="text-align: right;"|<source lang=apl inline>X←A2; Y←A2; 1↑⍴X←→1↑⍴Y</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>∨/1 2 1 3⍉X∘.=Y</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>∨/1 2 1 3⍉X∘.=Y</source>
Line 1,171: Line 1,180:
|rowspan=2| 281. || Test if X is a permutation vector ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|rowspan=2| 281. || Test if X is a permutation vector ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>^/1=+⌿X∘.=⍳⍴X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>/1=+⌿X∘.=⍳⍴X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 282. || Occurrences of string X in string Y ||style="text-align: right;"|<source lang=apl inline>X←C1; Y←C1</source>
|rowspan=2| 282. || Occurrences of string X in string Y ||style="text-align: right;"|<source lang=apl inline>X←C1; Y←C1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(^⌿(¯1+⍳⍴X)⌽(X∘.=Y),0)/⍳1+⍴Y</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(∧⌿(¯1+⍳⍴X)⌽(X∘.=Y),0)/⍳1+⍴Y</source>
|-
|-
|rowspan=2| 283. || Division to Y classes with width H, minimum G ||style="text-align: right;"|<source lang=apl inline>X←D; Y←I0; G←D0; H←D0</source>
|rowspan=2| 283. || Division to Y classes with width H, minimum G ||style="text-align: right;"|<source lang=apl inline>X←D; Y←I0; G←D0; H←D0</source>
Line 1,183: Line 1,192:
|rowspan=2| 285. || Repeat matrix ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
|rowspan=2| 285. || Repeat matrix ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(((¯1⌽~A)^A←(¯1↓X=1⌽X),0)/Y)∘.=Y</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(((¯1⌽~A)∧A←(¯1↓X=1⌽X),0)/Y)∘.=Y</source>
|-
|-
|rowspan=2| 286. || X×X identity matrix ||style="text-align: right;"|<source lang=apl inline>X←I0</source>
|rowspan=2| 286. || X×X identity matrix ||style="text-align: right;"|<source lang=apl inline>X←I0</source>
Line 1,190: Line 1,199:
|}
|}


=== Inner Product ⌈.× ⌊.× ⌊.+ ×.○ ×.* +.* ===
=== Inner Product <source lang=apl inline>⌈.×</source> <source lang=apl inline>⌊.×</source> <source lang=apl inline>⌊.+</source> <source lang=apl inline>×.○</source> <source lang=apl inline>×.*</source> <source lang=apl inline>+.*</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|287. || Maxima of elements of subsets of X specified by Y ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←B</source>
|rowspan=2|287. || Maxima of elements of subsets of X specified by Y ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←B</source>
Line 1,228: Line 1,237:
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X+.*2</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X+.*2</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 297. || Randomizing random numbers (in `⎕LX` in a workspace) ||style="text-align: right;"|<source lang=apl inline></source>
|rowspan=2| 297. || Randomizing random numbers (in <source lang=apl inline>⎕LX</source> in a workspace) ||style="text-align: right;"|<source lang=apl inline></source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⎕RL←⎕TS+.*2</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⎕RL←⎕TS+.*2</source>
|}
|}


=== Inner Product ∨.^ <.< <.≤ <.≥ ≤.≥>.> ===
=== Inner Product <source lang=apl inline>∨.∧</source> <source lang=apl inline><.<</source> <source lang=apl inline><.≤</source> <source lang=apl inline><.≥</source> <source lang=apl inline>≤.≥</source> <source lang=apl inline>>.></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|298. || Extending a transitive binary relation ||style="text-align: right;"|<source lang=apl inline>X←B2</source>
|rowspan=2|298. || Extending a transitive binary relation ||style="text-align: right;"|<source lang=apl inline>X←B2</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X←X∨.^X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X←X∨.∧X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 299. || Test if X is within range [ Y[1;],Y[2;] ) ||style="text-align: right;"|<source lang=apl inline>X←D0; Y←D2; 1↑⍴Y ←→ 2</source>
|rowspan=2| 299. || Test if X is within range [ Y[1;],Y[2;] ) ||style="text-align: right;"|<source lang=apl inline>X←D0; Y←D2; 1↑⍴Y ←→ 2</source>
Line 1,264: Line 1,273:
|}
|}


=== Inner Product ∨.≠ ^.= +.≠ +.= ===
=== Inner Product <source lang=apl inline>∨.≠</source> <source lang=apl inline>∧.=</source> <source lang=apl inline>+.≠</source> <source lang=apl inline>+.=</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|306. || Removing trailing blank columns ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
|rowspan=2|306. || Removing trailing blank columns ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
Line 1,280: Line 1,289:
|rowspan=2| 309. || Index of first occurrences of rows of X as rows of Y ||style="text-align: right;"|<source lang=apl inline>X←A, Y←A2</source>
|rowspan=2| 309. || Index of first occurrences of rows of X as rows of Y ||style="text-align: right;"|<source lang=apl inline>X←A, Y←A2</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⎕IO++⌿^⍀Y∨.≠⍉X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⎕IO++⌿∧⍀Y∨.≠⍉X</source>
|-
|-
|rowspan=2| 310. || `X⍳Y` for rows of matrices ||style="text-align: right;"|<source lang=apl inline>X←A2; Y←A2</source>
|rowspan=2| 310. || <source lang=apl inline>X⍳Y</source> for rows of matrices ||style="text-align: right;"|<source lang=apl inline>X←A2; Y←A2</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⎕IO++⌿^⍀X∨.≠⍉Y</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⎕IO++⌿∧⍀X∨.≠⍉Y</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 311. || Removing duplicate blank rows ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
|rowspan=2| 311. || Removing duplicate blank rows ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
Line 1,308: Line 1,317:
|rowspan=2| 316. || Removing trailing blank rows ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
|rowspan=2| 316. || Removing trailing blank rows ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(-2↑+/^\⌽X^.=' ')↓X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(-2↑+/\⌽X∧.=' ')↓X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 317. || Removing duplicate rows ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|rowspan=2| 317. || Removing duplicate rows ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(∨⌿<\X^.=⍉X)⌿X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(∨⌿<\X∧.=⍉X)⌿X</source>
|-
|-
|rowspan=2| 318. || Removing duplicate rows ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|rowspan=2| 318. || Removing duplicate rows ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(1 1⍉<\X^.=⍉X)⌿X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(1 1⍉<\X∧.=⍉X)⌿X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 319. || Test if circular lists are equal (excluding phase) ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
|rowspan=2| 319. || Test if circular lists are equal (excluding phase) ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>∨/Y^.=⍉(⍳⍴X)⌽(2⍴⍴X)⍴X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>∨/Y∧.=⍉(⍳⍴X)⌽(2⍴⍴X)⍴X</source>
|-
|-
|rowspan=2| 320. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|rowspan=2| 320. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X^.=∨/X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X∧.=∨/X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 321. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|rowspan=2| 321. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>X^.=^/X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>X∧.=/X</source>
|-
|-
|rowspan=2| 322. || Rows of matrix X starting with string Y ||style="text-align: right;"|<source lang=apl inline>X←A2; Y←A1</source>
|rowspan=2| 322. || Rows of matrix X starting with string Y ||style="text-align: right;"|<source lang=apl inline>X←A2; Y←A1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>((((1↑⍴X),⍴Y)↑X)^.=Y)⌿X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>((((1↑⍴X),⍴Y)↑X).=Y)⌿X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 323. || Occurrences of string X in string Y ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
|rowspan=2| 323. || Occurrences of string X in string Y ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>((-A)↓X^.=(A,1+⍴Y)⍴Y)/⍳(⍴Y)+1-A←⍴X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>((-A)↓X∧.=(A,1+⍴Y)⍴Y)/⍳(⍴Y)+1-A←⍴X</source>
|-
|-
|rowspan=2| 324. || Test if vector Y is a row of array X ||style="text-align: right;"|<source lang=apl inline>X←A; Y←A1</source>
|rowspan=2| 324. || Test if vector Y is a row of array X ||style="text-align: right;"|<source lang=apl inline>X←A; Y←A1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>1∊X^.=Y</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>1∊X∧.=Y</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 325. || Comparing vector Y with rows of array X ||style="text-align: right;"|<source lang=apl inline>X←A; Y←A1</source>
|rowspan=2| 325. || Comparing vector Y with rows of array X ||style="text-align: right;"|<source lang=apl inline>X←A; Y←A1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>X^.=Y</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>X∧.=Y</source>
|-
|-
|rowspan=2| 326. || Word lengths of words in list X ||style="text-align: right;"|<source lang=apl inline>X←C</source>
|rowspan=2| 326. || Word lengths of words in list X ||style="text-align: right;"|<source lang=apl inline>X←C</source>
Line 1,359: Line 1,368:
|}
|}


=== Inner Product -.÷ +.÷ +.× ===
=== Inner Product <source lang=apl inline>-.÷</source> <source lang=apl inline>+.÷</source> <source lang=apl inline>+.×</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|329. || Sum of alternating reciprocal series Y÷X ||style="text-align: right;"|<source lang=apl inline>X←D1; Y←D1</source>
|rowspan=2|329. || Sum of alternating reciprocal series Y÷X ||style="text-align: right;"|<source lang=apl inline>X←D1; Y←D1</source>
Line 1,365: Line 1,374:
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>Y-.÷X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>Y-.÷X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 330. || Limits X to fit in `` field Y[1 2] ||style="text-align: right;"|<source lang=apl inline>X←D; Y←I1</source>
|rowspan=2| 330. || Limits X to fit in <source lang=apl inline></source> field Y[1 2] ||style="text-align: right;"|<source lang=apl inline>X←D; Y←I1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(X⌈1↓A)⌊1↑A←(2 2⍴¯1 1 1 ¯.1)+.×10*(-1↓Y),-/Y+Y>99 0</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(X⌈1↓A)⌊1↑A←(2 2⍴¯1 1 1 ¯.1)+.×10*(-1↓Y),-/Y+Y>99 0</source>
Line 1,398: Line 1,407:
|}
|}


=== Scan ⌈\ ⌊\ ×\ -\ ===
=== Scan <source lang=apl inline>⌈\</source> <source lang=apl inline>⌊\</source> <source lang=apl inline>×\</source> <source lang=apl inline>-\</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|338. || Groups of ones in Y pointed to by X (or trailing parts) ||style="text-align: right;"|<source lang=apl inline>X←B; Y←B</source>
|rowspan=2|338. || Groups of ones in Y pointed to by X (or trailing parts) ||style="text-align: right;"|<source lang=apl inline>X←B; Y←B</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>Y^A=⌈\X×A←+\Y>¯1↓0,Y</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>Y∧A=⌈\X×A←+\Y>¯1↓0,Y</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 339. || Test if X is in ascending order along direction Y ||style="text-align: right;"|<source lang=apl inline>X←D; Y←I0</source>
|rowspan=2| 339. || Test if X is in ascending order along direction Y ||style="text-align: right;"|<source lang=apl inline>X←D; Y←I0</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>^/[Y]X=⌈\[Y]X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>/[Y]X=⌈\[Y]X</source>
|-
|-
|rowspan=2| 340. || Duplicating element of X belonging to `Y,1↑X` until next found ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←B1</source>
|rowspan=2| 340. || Duplicating element of X belonging to <source lang=apl inline>Y,1↑X</source> until next found ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←B1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X[1⌈⌈\Y×⍳⍴Y]</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X[1⌈⌈\Y×⍳⍴Y]</source>
Line 1,414: Line 1,423:
|rowspan=2| 341. || Test if X is in descending order along direction Y ||style="text-align: right;"|<source lang=apl inline>X←D; Y←I0</source>
|rowspan=2| 341. || Test if X is in descending order along direction Y ||style="text-align: right;"|<source lang=apl inline>X←D; Y←I0</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>^/[Y]X=⌊\[Y]X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>/[Y]X=⌊\[Y]X</source>
|-
|-
|rowspan=2| 342. || Value of Taylor series with coefficients Y at point X ||style="text-align: right;"|<source lang=apl inline>X←D0; Y←D1</source>
|rowspan=2| 342. || Value of Taylor series with coefficients Y at point X ||style="text-align: right;"|<source lang=apl inline>X←D0; Y←D1</source>
Line 1,425: Line 1,434:
|}
|}


=== Scan ⍲\ <\ ≤\ ≠\ ===
=== Scan <source lang=apl inline>⍲\</source> <source lang=apl inline><\</source> <source lang=apl inline>≤\</source> <source lang=apl inline>≠\</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|346. || Value of saddle point ||style="text-align: right;"|<source lang=apl inline>X←D2</source>
|rowspan=2|346. || Value of saddle point ||style="text-align: right;"|<source lang=apl inline>X←D2</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(<\,(X=(⍴X)⍴⌈⌿X)^X=⍉(⌽⍴X)⍴⌊/X)/,X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(<\,(X=(⍴X)⍴⌈⌿X)∧X=⍉(⌽⍴X)⍴⌊/X)/,X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 348. || First one (turn off all ones after first one) ||style="text-align: right;"|<source lang=apl inline>X←B</source>
|rowspan=2| 348. || First one (turn off all ones after first one) ||style="text-align: right;"|<source lang=apl inline>X←B</source>
Line 1,443: Line 1,452:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>≠\Y≠X\A≠¯1↓0,A←X/≠\¯1↓0,Y</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>≠\Y≠X\A≠¯1↓0,A←X/≠\¯1↓0,Y</source>
|-
|-
|rowspan=2| 352. || Vector `(X[1]⍴1),(X[2]⍴0),(X[3]⍴1),...` ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|rowspan=2| 352. || Vector <source lang=apl inline>(X[1]⍴1),(X[2]⍴0),(X[3]⍴1),...</source> ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>≠\(⍳+/X)∊+\⎕IO,X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>≠\(⍳+/X)∊+\⎕IO,X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 353. || Not leading zeroes(`∨\`) in each subvector of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|rowspan=2| 353. || Not leading zeroes(<source lang=apl inline>∨\</source>) in each subvector of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|- style="background-color`: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>≠\(Y∨X)\A≠¯1↓0,A←(Y∨X)/Y</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>≠\(Y∨X)\A≠¯1↓0,A←(Y∨X)/Y</source>
|-
|-
|rowspan=2| 354. || Leading ones (`^\) in each subvector of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|rowspan=2| 354. || Leading ones (<source lang=apl inline>∧\</source>) in each subvector of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>~≠\(Y≤X)\A≠¯1↓0,A←~(Y≤X)/Y</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>~≠\(Y≤X)\A≠¯1↓0,A←~(Y≤X)/Y</source>
Line 1,461: Line 1,470:
|rowspan=2| 356. || Locations of texts between quotes ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|rowspan=2| 356. || Locations of texts between quotes ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>A^¯1↓0,A←≠\X=''''</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>A∧¯1↓0,A←≠\X=''''</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 357. || Joining pairs of ones ||style="text-align: right;"|<source lang=apl inline>X←B</source>
|rowspan=2| 357. || Joining pairs of ones ||style="text-align: right;"|<source lang=apl inline>X←B</source>
Line 1,469: Line 1,478:
|rowspan=2| 358. || Places between pairs of ones ||style="text-align: right;"|<source lang=apl inline>X←B</source>
|rowspan=2| 358. || Places between pairs of ones ||style="text-align: right;"|<source lang=apl inline>X←B</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(~X)^≠\X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(~X)∧≠\X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 359. || Running parity ||style="text-align: right;"|<source lang=apl inline>X←B</source>
|rowspan=2| 359. || Running parity ||style="text-align: right;"|<source lang=apl inline>X←B</source>
Line 1,476: Line 1,485:
|}
|}


=== Scan ∨\ ^\ ===
=== Scan <source lang=apl inline>∨\</source> <source lang=apl inline>∧\</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|360. || Removing leading and trailing blanks ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|rowspan=2|360. || Removing leading and trailing blanks ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>((⌽∨\⌽A)^∨\A←' '≠X)/X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>((⌽∨\⌽A)∧∨\A←' '≠X)/X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 361. || First group of ones ||style="text-align: right;"|<source lang=apl inline>X←B</source>
|rowspan=2| 361. || First group of ones ||style="text-align: right;"|<source lang=apl inline>X←B</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>X^^\X=∨\X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>X∧∧\X=∨\X</source>
|-
|-
|rowspan=2| 362. || Removing trailing blank columns ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
|rowspan=2| 362. || Removing trailing blank columns ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
Line 1,504: Line 1,513:
|rowspan=2| 366. || Centering character array X with ragged edges ||style="text-align: right;"|<source lang=apl inline>X←C</source>
|rowspan=2| 366. || Centering character array X with ragged edges ||style="text-align: right;"|<source lang=apl inline>X←C</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(A-⌊0.5×(A←+/^\⌽A)++/^\A←' '=⌽X)⌽X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(A-⌊0.5×(A←+/\⌽A)++/\A←' '=⌽X)⌽X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 367. || Decommenting a matrix representation of a function (`⎕CR`) ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
|rowspan=2| 367. || Decommenting a matrix representation of a function (<source lang=apl inline>⎕CR</source>) ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(∨/A)⌿(⍴X)⍴(,A)\(,A←^\('⍝'≠X)∨≠\X='''')/,X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(∨/A)⌿(⍴X)⍴(,A)\(,A←∧\('⍝'≠X)∨≠\X='''')/,X</source>
|-
|-
|rowspan=2| 369. || Centering character array X with only right edge ragged ||style="text-align: right;"|<source lang=apl inline>X←C</source>
|rowspan=2| 369. || Centering character array X with only right edge ragged ||style="text-align: right;"|<source lang=apl inline>X←C</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(-⌊0.5×+/^\' '=⌽X)⌽X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(-⌊0.5×+/\' '=⌽X)⌽X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 370. || Justifying right ||style="text-align: right;"|<source lang=apl inline>X←C</source>
|rowspan=2| 370. || Justifying right ||style="text-align: right;"|<source lang=apl inline>X←C</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(-+/^\⌽' '=X)⌽X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(-+/\⌽' '=X)⌽X</source>
|-
|-
|rowspan=2| 371. || Removing trailing blanks ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|rowspan=2| 371. || Removing trailing blanks ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(-+/^\⌽' '=X)↓X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(-+/\⌽' '=X)↓X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 372. || Justifying left ||style="text-align: right;"|<source lang=apl inline>X←C</source>
|rowspan=2| 372. || Justifying left ||style="text-align: right;"|<source lang=apl inline>X←C</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(+/^\' '=X)⌽X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(+/\' '=X)⌽X</source>
|-
|-
|rowspan=2| 373. || Editing X with Y '-wise ||style="text-align: right;"|<source lang=apl inline>X←C1; Y←C1</source>
|rowspan=2| 373. || Editing X with Y '-wise ||style="text-align: right;"|<source lang=apl inline>X←C1; Y←C1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>((~(⍴A↑X)↑'/'=Y)/A↑X),(1↓A↓Y),(A←+/^\Y≠',')↓X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>((~(⍴A↑X)↑'/'=Y)/A↑X),(1↓A↓Y),(A←+/\Y≠',')↓X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 374. || Removing leading blanks ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|rowspan=2| 374. || Removing leading blanks ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(+/^\' '=X)↓X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(+/\' '=X)↓X</source>
|-
|-
|rowspan=2| 375. || Indices of first blanks in rows of array X ||style="text-align: right;"|<source lang=apl inline>X←C</source>
|rowspan=2| 375. || Indices of first blanks in rows of array X ||style="text-align: right;"|<source lang=apl inline>X←C</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⎕IO++/^\' '≠X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⎕IO++/\' '≠X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 377. || Leading ones (turn off all ones after first zero) ||style="text-align: right;"|<source lang=apl inline>X←B</source>
|rowspan=2| 377. || Leading ones (turn off all ones after first zero) ||style="text-align: right;"|<source lang=apl inline>X←B</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>^\X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>\X</source>
|}
|}


=== Scan +\ ===
=== Scan <source lang=apl inline>+\</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|378. || Vector (`X[1]⍴1),(Y[1]⍴0),(X[2]⍴1),...` ||style="text-align: right;"|<source lang=apl inline>X←I1; Y←I1</source>
|rowspan=2|378. || Vector (<source lang=apl inline>X[1]⍴1),(Y[1]⍴0),(X[2]⍴1),...</source> ||style="text-align: right;"|<source lang=apl inline>X←I1; Y←I1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(⍳+/X,Y)∊+\1+¯1↓0,((⍳+/X)∊+\X)\Y</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(⍳+/X,Y)∊+\1+¯1↓0,((⍳+/X)∊+\X)\Y</source>
Line 1,553: Line 1,562:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>((X≠0)/Y)[+\¯1⌽(⍳+/X)∊+\X]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>((X≠0)/Y)[+\¯1⌽(⍳+/X)∊+\X]</source>
|-
|-
|rowspan=2| 380. || Vector (`Y[1]+⍳X[1]),(Y[2]+⍳X[2]),(Y[3]+⍳X[3]),...` ||style="text-align: right;"|<source lang=apl inline>X←I1; Y←I1; ⍴X←→⍴Y</source>
|rowspan=2| 380. || Vector (<source lang=apl inline>Y[1]+⍳X[1]),(Y[2]+⍳X[2]),(Y[3]+⍳X[3]),...</source> ||style="text-align: right;"|<source lang=apl inline>X←I1; Y←I1; ⍴X←→⍴Y</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⎕IO++\1+((⍳+/X)∊+\⎕IO,X)\Y-¯1↓1,X+Y</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⎕IO++\1+((⍳+/X)∊+\⎕IO,X)\Y-¯1↓1,X+Y</source>
Line 1,619: Line 1,628:
|rowspan=2| 397. || Locations of texts between quotes ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|rowspan=2| 397. || Locations of texts between quotes ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>A^¯1↓0,A←2|+\X=''''</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>A∧¯1↓0,A←2|+\X=''''</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 398. || X:th subvector of Y (subvectors separated by Y[1]) ||style="text-align: right;"|<source lang=apl inline>Y←A1; X←I0</source>
|rowspan=2| 398. || X:th subvector of Y (subvectors separated by Y[1]) ||style="text-align: right;"|<source lang=apl inline>Y←A1; X←I0</source>
Line 1,635: Line 1,644:
|rowspan=2| 401. || Groups of ones in Y pointed to by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|rowspan=2| 401. || Groups of ones in Y pointed to by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>Y^A∊(X^Y)/A←+\Y>¯1↓0,Y</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>Y∧A∊(X∧Y)/A←+\Y>¯1↓0,Y</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 402. || ith starting indicators X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|rowspan=2| 402. || ith starting indicators X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
Line 1,674: Line 1,683:
|}
|}


=== Reduction ○/ ÷/ -/ ×/ ===
=== Reduction <source lang=apl inline>○/</source> <source lang=apl inline>÷/</source> <source lang=apl inline>-/</source> <source lang=apl inline>×/</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|411. || Complementary angle (arccos sin X) ||style="text-align: right;"|<source lang=apl inline>X←D0</source>
|rowspan=2|411. || Complementary angle (arccos sin X) ||style="text-align: right;"|<source lang=apl inline>X←D0</source>
Line 1,733: Line 1,742:
|}
|}


=== Reduction ⌈/ ⌊/ ===
=== Reduction <source lang=apl inline>⌈/</source> <source lang=apl inline>⌊/</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|425. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←D1</source>
|rowspan=2|425. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←D1</source>
Line 1,759: Line 1,768:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>X,[.5×⌈/(⍴⍴X),⍴⍴Y]Y</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>X,[.5×⌈/(⍴⍴X),⍴⍴Y]Y</source>
|-
|-
|rowspan=2| 431. || Quick membership (``) for positive integers ||style="text-align: right;"|<source lang=apl inline>X←I1; Y←I1</source>
|rowspan=2| 431. || Quick membership (<source lang=apl inline></source>) for positive integers ||style="text-align: right;"|<source lang=apl inline>X←I1; Y←I1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>A←(⌈/X,Y)⍴0 ⋄ A[Y]←1 ⋄ A[X]</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>A←(⌈/X,Y)⍴0 ⋄ A[Y]←1 ⋄ A[X]</source>
Line 1,780: Line 1,789:
|}
|}


=== Reduction ∨/ ⍲/ ≠/ ===
=== Reduction <source lang=apl inline>∨/</source> <source lang=apl inline>⍲/</source> <source lang=apl inline>≠/</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|436. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|rowspan=2|436. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
Line 1,788: Line 1,797:
|rowspan=2| 437. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|rowspan=2| 437. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(^/X)∨~∨/X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(/X)∨~∨/X</source>
|-
|-
|rowspan=2| 438. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|rowspan=2| 438. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(^/X)=∨/X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(/X)=∨/X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 439. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|rowspan=2| 439. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>^/X÷∨/X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>/X÷∨/X</source>
|-
|-
|rowspan=2| 440. || Removing duplicate rows from ordered matrix X ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|rowspan=2| 440. || Removing duplicate rows from ordered matrix X ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
Line 1,827: Line 1,836:
|}
|}


=== Reduction ^/ ===
=== Reduction <source lang=apl inline>∧/</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|447. || Number of areas intersecting areas in X ||style="text-align: right;"|<source lang=apl inline>X←D3 (n × 2 × dim)</source>
|rowspan=2|447. || Number of areas intersecting areas in X ||style="text-align: right;"|<source lang=apl inline>X←D3 (n × 2 × dim)</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>+/A^⍉A←^/X[;A⍴1;]≤2 1 3⍉X[;(A←1↑⍴X)⍴2;]</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>+/A∧⍉A←∧/X[;A⍴1;]≤2 1 3⍉X[;(A←1↑⍴X)⍴2;]</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 448. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|rowspan=2| 448. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>^/X/1⌽X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>/X/1⌽X</source>
|-
|-
|rowspan=2| 449. || Comparison of successive rows ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|rowspan=2| 449. || Comparison of successive rows ||style="text-align: right;"|<source lang=apl inline>X←A2</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>^/X=1⊖X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>/X=1⊖X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 450. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←A1</source>
|rowspan=2| 450. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←A1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>^/X=1⌽X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>/X=1⌽X</source>
|-
|-
|rowspan=2| 451. || Test if X is a valid APL name ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|rowspan=2| 451. || Test if X is a valid APL name ||style="text-align: right;"|<source lang=apl inline>X←C1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>^/((1↑X)∊10↓A),X∊A←'0..9A..Za..z'</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>/((1↑X)∊10↓A),X∊A←'0..9A..Za..z'</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 452. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←A1</source>
|rowspan=2| 452. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←A1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>^/X=1↑X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>/X=1↑X</source>
|-
|-
|rowspan=2| 453. || Identity of two sets ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
|rowspan=2| 453. || Identity of two sets ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>^/(X∊Y),Y∊X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>/(X∊Y),Y∊X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 454. || Test if X is a permutation vector ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|rowspan=2| 454. || Test if X is a permutation vector ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>^/(⍳⍴X)∊X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>/(⍳⍴X)∊X</source>
|-
|-
|rowspan=2| 455. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|rowspan=2| 455. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>~^/X∊~X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>~/X∊~X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 456. || Test if X is boolean ||style="text-align: right;"|<source lang=apl inline>X←A</source>
|rowspan=2| 456. || Test if X is boolean ||style="text-align: right;"|<source lang=apl inline>X←A</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>^/,X∊0 1</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>/,X∊0 1</source>
|-
|-
|rowspan=2| 457. || Test if Y is a subset of X (`Y ⊂ X`) ||style="text-align: right;"|<source lang=apl inline>X←A; Y←A1</source>
|rowspan=2| 457. || Test if Y is a subset of X (<source lang=apl inline>Y ⊂ X</source>) ||style="text-align: right;"|<source lang=apl inline>X←A; Y←A1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>^/Y∊X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>/Y∊X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 458. || Test if arrays of equal shape are identical ||style="text-align: right;"|<source lang=apl inline>X←A; Y←A; ⍴X ←→ ⍴Y</source>
|rowspan=2| 458. || Test if arrays of equal shape are identical ||style="text-align: right;"|<source lang=apl inline>X←A; Y←A; ⍴X ←→ ⍴Y</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>^/,X=Y</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>/,X=Y</source>
|-
|-
|rowspan=2| 459. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←A1</source>
|rowspan=2| 459. || Test if all elements of vector X are equal ||style="text-align: right;"|<source lang=apl inline>X←A1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>^/X=X[1]</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>/X=X[1]</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 460. || Blank rows ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
|rowspan=2| 460. || Blank rows ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>^/' '=X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>/' '=X</source>
|-
|-
|rowspan=2| 461. || All, both ||style="text-align: right;"|<source lang=apl inline>X←B</source>
|rowspan=2| 461. || All, both ||style="text-align: right;"|<source lang=apl inline>X←B</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>^/X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>/X</source>
|}
|}


=== Reduction +/ ===
=== Reduction <source lang=apl inline>+/</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|462. || Standard deviation of X ||style="text-align: right;"|<source lang=apl inline>X←D1</source>
|rowspan=2|462. || Standard deviation of X ||style="text-align: right;"|<source lang=apl inline>X←D1</source>
Line 1,957: Line 1,966:
|}
|}


=== Reverse ⌽ ⊖ ===
=== Reverse <source lang=apl inline></source> <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|478. || Scan from end with function `` ||style="text-align: right;"|<source lang=apl inline>X←A</source>
|rowspan=2|478. || Scan from end with function <source lang=apl inline></source> ||style="text-align: right;"|<source lang=apl inline>X←A</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⌽⍺\⌽X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>⌽⍺\⌽X</source>
Line 1,996: Line 2,005:
|}
|}


=== Rotate ⌽ ⊖ ===
=== Rotate <source lang=apl inline></source> <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|488. || Vector (cross) product of vectors ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D</source>
|rowspan=2|488. || Vector (cross) product of vectors ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D</source>
Line 2,010: Line 2,019:
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(¯1⌽1↓(X≠¯1⌽X),1)/X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(¯1⌽1↓(X≠¯1⌽X),1)/X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 491. || An expression giving itself ||style="text-align: right;"|<source lang=apl inline></source>
|rowspan=2| 491. || [[Quine|An expression giving itself]] ||style="text-align: right;"|<source lang=apl inline></source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>1⌽22⍴11⍴'''1⌽22⍴11⍴'''</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>1⌽22⍴11⍴'''1⌽22⍴11⍴'''</source>
Line 2,018: Line 2,027:
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(Y⌽1 2)⍉X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(Y⌽1 2)⍉X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 493. || Any element true (`∨/`) on each subvector of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|rowspan=2| 493. || Any element true (<source lang=apl inline>∨/</source>) on each subvector of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(X/Y)≥A/1⌽A←(Y∨X)/X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(X/Y)≥A/1⌽A←(Y∨X)/X</source>
|-
|-
|rowspan=2| 494. || All elements true (`^/`) on each subvector of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|rowspan=2| 494. || All elements true (<source lang=apl inline>∧/</source>) on each subvector of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(X/Y)^A/1⌽A←(Y≤X)/X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(X/Y)∧A/1⌽A←(Y≤X)/X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 495. || Removing leading, multiple and trailing Y's ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A0</source>
|rowspan=2| 495. || Removing leading, multiple and trailing Y's ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A0</source>
Line 2,079: Line 2,088:
|}
|}


=== Transpose ⍉ ===
=== Transpose <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|509. || Applying to columns action defined on rows ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←I0</source>
|rowspan=2|509. || Applying to columns action defined on rows ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←I0</source>
Line 2,089: Line 2,098:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>1 1⍉X[Y[1;];Y[2;]]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>1 1⍉X[Y[1;];Y[2;]]</source>
|-
|-
|rowspan=2| 511. || Successive transposes of G (X after Y: `X⍉Y⍉G`) ||style="text-align: right;"|<source lang=apl inline>X←I1; Y←I1</source>
|rowspan=2| 511. || Successive transposes of G (X after Y: <source lang=apl inline>X⍉Y⍉G</source>) ||style="text-align: right;"|<source lang=apl inline>X←I1; Y←I1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X[Y]⍉G</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>X[Y]⍉G</source>
Line 2,126: Line 2,135:
|}
|}


=== Maximum ⌈ Minimum ⌊ ===
=== Maximum <source lang=apl inline></source> Minimum <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|520. || Limiting X between Y[1] and Y[2], inclusive ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D1</source>
|rowspan=2|520. || Limiting X between Y[1] and Y[2], inclusive ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D1</source>
Line 2,157: Line 2,166:
|}
|}


=== Ceiling ⌈ Floor ⌊ ===
=== Ceiling <source lang=apl inline></source> Floor <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|527. || Reshaping X into a matrix of width Y ||style="text-align: right;"|<source lang=apl inline>X←D, Y←I0</source>
|rowspan=2|527. || Reshaping X into a matrix of width Y ||style="text-align: right;"|<source lang=apl inline>X←D, Y←I0</source>
Line 2,212: Line 2,221:
|}
|}


=== Residue | ===
=== Residue <source lang=apl inline>|</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|540. || Test if X is a leap year ||style="text-align: right;"|<source lang=apl inline>X←I</source>
|rowspan=2|540. || Test if X is a leap year ||style="text-align: right;"|<source lang=apl inline>X←I</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(0=400|X)∨(0≠100|X)^0=4|X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(0=400|X)∨(0≠100|X)∧0=4|X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 541. || Framing ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
|rowspan=2| 541. || Framing ||style="text-align: right;"|<source lang=apl inline>X←C2</source>
Line 2,271: Line 2,280:
|}
|}


=== Magnitude |, Signum × ===
=== Magnitude <source lang=apl inline>|</source>, Signum <source lang=apl inline>×</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|554. || Increasing absolute value without change of sign ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D</source>
|rowspan=2|554. || Increasing absolute value without change of sign ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D</source>
Line 2,290: Line 2,299:
|}
|}


=== Expand \ ⍀ ===
=== Expand <source lang=apl inline>\</source> <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|558. || Not first zero (≤\) in each subvector of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|rowspan=2|558. || Not first zero (≤\) in each subvector of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>~(B^X)∨(B∨X)\A>¯1↓0,A←(B∨X)/B←~Y</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>~(B∧X)∨(B∨X)\A>¯1↓0,A←(B∨X)/B←~Y</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 559. || First one (<\) in each subvector of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|rowspan=2| 559. || First one (<\) in each subvector of Y indicated by X ||style="text-align: right;"|<source lang=apl inline>X←B1; Y←B1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(Y^X)∨(Y∨X)\A>¯1↓0,A←(Y∨X)/Y</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(Y∧X)∨(Y∨X)\A>¯1↓0,A←(Y∨X)/Y</source>
|-
|-
|rowspan=2| 560. || Replacing elements of X in set Y with blanks/zeroes ||style="text-align: right;"|<source lang=apl inline>X←A0; Y←A1</source>
|rowspan=2| 560. || Replacing elements of X in set Y with blanks/zeroes ||style="text-align: right;"|<source lang=apl inline>X←A0; Y←A1</source>
Line 2,341: Line 2,350:
|}
|}


=== Compress / ⌿ ===
=== Compress <source lang=apl inline>/</source> <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|570. || Lengths of groups of ones in X ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
|rowspan=2|570. || Lengths of groups of ones in X ||style="text-align: right;"|<source lang=apl inline>X←B1</source>
Line 2,451: Line 2,460:
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(,X,[1.5]1)/,X,[1.5]~X</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(,X,[1.5]1)/,X,[1.5]~X</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 599. || Reduction with FUNCTION `` without respect to shape ||style="text-align: right;"|<source lang=apl inline>X←D</source>
|rowspan=2| 599. || Reduction with FUNCTION <source lang=apl inline></source> without respect to shape ||style="text-align: right;"|<source lang=apl inline>X←D</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⍺/,X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⍺/,X</source>
Line 2,468: Line 2,477:
|}
|}


=== Take ↑ ===
=== Take <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|603. || Inserting vector X into matrix Y after row G ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A2; G←I0</source>
|rowspan=2|603. || Inserting vector X into matrix Y after row G ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A2; G←I0</source>
Line 2,563: Line 2,572:
|}
|}


=== Drop ↓ ===
=== Drop <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|627. || Starting points of groups of equal elements (non-empty X) ||style="text-align: right;"|<source lang=apl inline>X←A1</source>
|rowspan=2|627. || Starting points of groups of equal elements (non-empty X) ||style="text-align: right;"|<source lang=apl inline>X←A1</source>
Line 2,634: Line 2,643:
|}
|}


=== Member Of ∊ ===
=== Member Of <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|644. || Expansion vector with zero after indices Y ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←I1</source>
|rowspan=2|644. || Expansion vector with zero after indices Y ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←I1</source>
Line 2,677: Line 2,686:
|}
|}


=== Index Generator ⍳ ===
=== Index Generator <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|654. || Inverting a permutation ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
|rowspan=2|654. || Inverting a permutation ||style="text-align: right;"|<source lang=apl inline>X←I1</source>
Line 2,708: Line 2,717:
|}
|}


=== Logical Functions ~ ∨ ^ ⍱ ⍲ ===
=== Logical Functions <source lang=apl inline>~</source> <source lang=apl inline></source> <source lang=apl inline>∧</source> <source lang=apl inline></source> <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|661. || Demote non-boolean representations to booleans ||style="text-align: right;"|<source lang=apl inline>X←B</source>
|rowspan=2|661. || Demote non-boolean representations to booleans ||style="text-align: right;"|<source lang=apl inline>X←B</source>
Line 2,716: Line 2,725:
|rowspan=2| 662. || Test if X is within range ( Y[1],Y[2] ) ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D1</source>
|rowspan=2| 662. || Test if X is within range ( Y[1],Y[2] ) ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D1</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(Y[1]<X)^X<Y[2]</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(Y[1]<X)∧X<Y[2]</source>
|-
|-
|rowspan=2| 663. || Test if X is within range [ Y[1],Y[2] ] ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D1; 2=⍴Y</source>
|rowspan=2| 663. || Test if X is within range [ Y[1],Y[2] ] ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D1; 2=⍴Y</source>
|-
|-
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(Y[1]≤X)^(X≤Y[2])</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(Y[1]≤X)(X≤Y[2])</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 664. || Zeroing all boolean values ||style="text-align: right;"|<source lang=apl inline>X←B</source>
|rowspan=2| 664. || Zeroing all boolean values ||style="text-align: right;"|<source lang=apl inline>X←B</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>0^X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>0∧X</source>
|-
|-
|rowspan=2| 666. || Selection of elements of X and Y depending on condition G ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D; G←B</source>
|rowspan=2| 666. || Selection of elements of X and Y depending on condition G ||style="text-align: right;"|<source lang=apl inline>X←D; Y←D; G←B</source>
Line 2,730: Line 2,739:
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(X×G)+Y×~G</source>
|colspan=2 style="background-color: #F5F5F5"|<source lang=apl inline>(X×G)+Y×~G</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|rowspan=2| 667. || Changing an index origin dependent result to be as `⎕IO=1` ||style="text-align: right;"|<source lang=apl inline>X←I</source>
|rowspan=2| 667. || Changing an index origin dependent result to be as <source lang=apl inline>⎕IO=1</source> ||style="text-align: right;"|<source lang=apl inline>X←I</source>
|- style="background-color: #FFFFFF"
|- style="background-color: #FFFFFF"
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(~⎕IO)+X</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>(~⎕IO)+X</source>
Line 2,739: Line 2,748:
|}
|}


=== Comparison <≤> ≠ ===
=== Comparison <source lang=apl inline><≤></source> <source lang=apl inline>≠</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|669. || X implies Y ||style="text-align: right;"|<source lang=apl inline>X←B; Y←B</source>
|rowspan=2|669. || X implies Y ||style="text-align: right;"|<source lang=apl inline>X←B; Y←B</source>
Line 2,766: Line 2,775:
|}
|}


=== Ravel , ===
=== Ravel <source lang=apl inline>,</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|675. || Catenating Y elements G after every element of X ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←I0; G←A</source>
|rowspan=2|675. || Catenating Y elements G after every element of X ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←I0; G←A</source>
Line 2,809: Line 2,818:
|}
|}


=== Catenate , ===
=== Catenate <source lang=apl inline>,</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|685. || Separating variable length lines ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
|rowspan=2|685. || Separating variable length lines ||style="text-align: right;"|<source lang=apl inline>X←A1; Y←A1</source>
Line 2,876: Line 2,885:
|}
|}


=== Indexing [ ] ===
=== Indexing <source lang=apl inline>[ ]</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|702. || Value of fixed-degree polynomial Y at points X ||style="text-align: right;"|<source lang=apl inline>Y←D1; X←D</source>
|rowspan=2|702. || Value of fixed-degree polynomial Y at points X ||style="text-align: right;"|<source lang=apl inline>Y←D1; X←D</source>
Line 2,923: Line 2,932:
|}
|}


=== Shape ⍴ ===
=== Shape <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|713. || Rank of array X ||style="text-align: right;"|<source lang=apl inline>X←A</source>
|rowspan=2|713. || Rank of array X ||style="text-align: right;"|<source lang=apl inline>X←A</source>
Line 2,946: Line 2,955:
|}
|}


=== Reshape ⍴ ===
=== Reshape <source lang=apl inline></source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|720. || Forming an initially empty array to be expanded ||style="text-align: right;"|<source lang=apl inline></source>
|rowspan=2|720. || Forming an initially empty array to be expanded ||style="text-align: right;"|<source lang=apl inline></source>
Line 2,965: Line 2,974:
|}
|}


=== Arithmetic + - × ÷ ===
=== Arithmetic <source lang=apl inline>+</source> <source lang=apl inline>-</source> <source lang=apl inline>×</source> <source lang=apl inline>÷</source> ===
{|class=wikitable style="background-color: #EBEBEB"
{|class=wikitable style="background-color: #EBEBEB"
|rowspan=2|724. || Continued fraction ||style="text-align: right;"|<source lang=apl inline></source>
|rowspan=2|724. || Continued fraction ||style="text-align: right;"|<source lang=apl inline></source>
Line 3,030: Line 3,039:
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⍎⊖⍕⊃⊂|⌊-*+○⌈×÷!⌽⍉⌹~⍴⍋⍒,⍟?⍳0</source>
|colspan=2 style="background-color: #FFFFFF"|<source lang=apl inline>⍎⊖⍕⊃⊂|⌊-*+○⌈×÷!⌽⍉⌹~⍴⍋⍒,⍟?⍳0</source>
|}
|}
== Notes ==
<references/>
[[Category:Lists]][[Category:Publications]]
trusted
69

edits

Navigation menu