FinnAPL idiom library

From APL Wiki
Jump to navigation Jump to search
The original FinnAPL idiom library

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.

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.

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

As an example of how each entry in the library is arranged, consider the first idiom:

1. Progressive index of (without replacement) XA1; YA1
((X)⍴⍋⍋XX,Y)(Y)⍴⍋⍋XY,X

The entry includes a brief description of what the idiom does, which is followed by the expression XA1; YA1 which specifies the types and ranks of the arguments:

A Any [Numeric, Character or Boolean]
D Numeric
I Integer
C Character
B Boolean

A number following the type indicates the rank, e.g.

A0 Any scalar (rank 0)
A1 Any vector (rank 1)
A2 Any matrix (rank 2)

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:

      X'which side does an ostrich have its feathers?'
      Y'on the outside, of course!'
      ((X)⍴⍋⍋XX,Y)(Y)⍴⍋⍋XY,X
13 18 6 22 2 10 11 20 46 34 7 3 9 14 46 16 46 37 19 4 46 46 23 15 31 46
      (X,'-')[((X)⍴⍋⍋XX,Y)(Y)⍴⍋⍋XY,X]
on the o-tside- -f c--rse-

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.

For a more detailed description of how this particular idiom works, see this analysis by Bob Smith.

Idiom Library Listing

Grade Up

1. Progressive index of (without replacement) XA1; YA1
((X)⍴⍋⍋XX,Y)(Y)⍴⍋⍋XY,X
2. Ascending cardinal numbers (ranking, shareable) XD1
.5×(⍋⍋X)+⌽⍋⍋⌽X
3. Cumulative maxima (\) of subvectors of Y indicated by X XB1; YD1
Y[A⍳⌈\AA[(+\X)[AY]]]
4. Cumulative minima (\) of subvectors of Y indicated by X XB1; YD1
Y[A⍳⌈\AA[(+\X)[AY]]]
5. Progressive index of (without replacement) XA1; YA1
((XX,Y)⍳⍳⍴X)(XY,X)⍳⍳⍴Y
6. Test if X and Y are permutations of each other XD1; YD1
Y[Y].=X[X]
7. Test if X is a permutation vector XI1
X.=⍋⍋X
8. Grade up () for sorting subvectors of Y having lengths X YD1; XI1; (Y) ←→ +/X
A[(+\(⍳⍴Y)∊+\⎕IO,X)[AY]]
9. Index of the elements of X in Y XD1; YD1
(((1,A)/B)1+⍴Y)[(Y)(+\1,A(1A)¯1AA[B])[BAY,X]]
10. Minima (⌊/) of elements of subvectors of Y indicated by X XB1; YD1
Y[A[X/(+\X)[AY]]]
11. Grade up () for sorting subvectors of Y indicated by X XB1; YD1
A[(+\X)[AY]]
12. Occurences of the elements of X XD1
|-(2,⍴X)⍴⍋⍋X,X
13. Sorting rows of matrix X into ascending order XD2
(X)(,X)[A[(,⍉(⌽⍴X)⍴⍳1↑⍴X)[A⍋,X]]]
14. Adding a new dimension after dimension G Y-fold GI0; YI0; XA
(⍋⍋(G+1),⍳⍴⍴X)(Y,⍴X)X
15. Sorting rows of matrix X into ascending order XD2
A(⍋,X)-⎕IO (X)(,X)[⎕IO+A[⍋⌊A÷¯1↑⍴X]]
16. Y smallest elements of X in order of occurrence XD1, YI0
((⍋⍋X)∊⍳Y)/X
17. Merging X, Y, Z ... under control of G (mesh) XA1; YA1; ZA1; ... ; GI1
(X,Y,Z,...)[⍋⍋G]
18. Merging X and Y under control of G (mesh) XA1; YA1; GB1
(X,Y)[⍋⍋G]
19. Ascending cardinal numbers (ranking, all different) XD1
⍋⍋X
20. Grade down () for sorting subvectors of Y having lengths X YD1; XI1; (Y) ←→ +/X
A[(+\(⍳⍴Y)∊+\⎕IO,X)[AY]]
21. Maxima (⌈/) of elements of subvectors of Y indicated by X XB1; YD1
Y[A[X/(+\X)[AY]]]
22. Grade down () for sorting subvectors of Y indicated by X XB1; YD1
A[(+\X)[AY]]
23. Y largest elements of X in order of occurrence XD1; YI0
((⍋⍒X)∊⍳Y)/X
24. Merging X and Y under control of G (mesh) XA1; YA1; GB1
(Y,X)[⍋⍒G]
25. Descending cardinal numbers (ranking, all different) XD1
⍋⍒X
26. Sorting rows of X according to key Y (alphabetizing) XA2; YA1
X[(1+⍴Y)Y⍳⍉X;]
27. Diagonal ravel XA
(,X)[⍋+(X)(⍳⍴,X)-⎕IO]
28. Grade up according to key Y YA1; XA1
YX
29. Test if X is a permutation vector XI1
X[X].=⍳⍴X
30. Sorting a matrix into lexicographic order XD2
X[⍋+A<.-⍉AX,0;]
31. Sorting words in list X according to word length XC2
X[X+.' ';]
32. Classification of X to classes starting with Y XD1;YD1;Y<.1Y
A[(B/C)-⍴Y]B/+\~B(Y)<CY,X+A0×X A
33. Rotate first elements (1) of subvectors of Y indicated by X XB1; YA1
Y[X++\X]
34. Doubling quotes (for execution) XC1
(X,'''')[(⎕IO+⍴X)⌊⍋(⍳⍴X),(''''=X)/⍳⍴X]
35. Inserting Y *'s into vector X after indices G XC1; YI0; GI1
(X,'*')[(⎕IO+⍴X)⌊⍋(⍳⍴X),(Y×⍴G)G]
36. Median XD1
X[(X)[.5×⍴X]]
37. Index of last maximum element of X XD1
¯1↑⍋X
38. Index of (first) minimum element of X XD1
1↑⍋X
39. Expansion vector with zero after indices Y XD1; YI1
(X)≥⍋(⍳⍴X),Y
40. Catenating G elements H before indices Y in vector X XA1; YI1; GI0; HA0
AG×⍴,Y ((AH),X)[(AY),⍳⍴X]
41. Catenating G elements H after indices Y in vector X XA1; YI1; GI0; HA0
AG×⍴,Y (X,AH)[(⍳⍴X),AY]
42. Merging X and Y under control of G (mesh) XA1; YA1; GB1
A[G]AY,X A
43. Sorting a matrix according to Y:th column XD2
X[X[;Y];]
44. Sorting indices X according to data Y XI1; YD1
X[Y[X]]
45. Choosing sorting direction during execution XD1; YI0
X×(¯1 1)[Y]
46. Sorting Y according to X XA1; YA1
Y[X]
47. Sorting X into ascending order XD1
X[X]
48. Inverting a permutation XI1
X

Grade Down

49. Reverse vector X on condition Y XA1; YB0
X[Y!⍳⍴X]
50. Sorting a matrix into reverse lexicographic order XD2
X[⍒+A<.-⍉AX,0;]
52. Reversal () of subvectors of X having lengths Y XD1; YI1
X[⌽⍒+\(⍳⍴X)∊+\⎕IO,Y]
53. Reversal () of subvectors of Y indicated by X XB1; YA1
Y[⌽⍒+\X]
55. Indices of ones in logical vector X XB1
(+/X)↑⍒X
56. Index of first maximum element of X XD1
1↑⍒X
57. Moving all blanks to end of text XC1
X[' 'X]
58. Sorting X into descending order XD1
X[X]
59. Moving elements satisfying condition Y to the start of X XA1; YB1
X[Y]

Matrix Inversion / Matrix Division

60. Interpolated value of series (X,Y) at G XD1; YD1; GD0
GYX∘.*⌽-⎕IO-⍳⍴X
61. Predicted values of exponential (curve) fit XD1; YD1
*A+.×(Y)AX∘.*0 1
62. Coefficients of exponential (curve) fit of points (X,Y) XD1; YD1
A(Y)X∘.*0 1 A[1]*A[1] A
63. Predicted values of best linear fit (least squares) XD1; YD1
A+.×YAX∘.*0 1
64. G-degree polynomial (curve) fit of points (X,Y) XD1; YD1
YX∘.*0,⍳G
65. Best linear fit of points (X,Y) (least squares) XD1; YD1
YX∘.*0 1

Decode

66. Binary format of decimal number X XI0
10((1+⌈2⍟⌈/,X)2)X
67. Barchart of two integer series (across the page) XI2; 1⍴⍴X ←→ 2
' *○⍟'[⎕IO+2X∘.≥⍳⌈/,X]
68. Case structure with an encoded branch destination YI1; XB1
Y[1+2X]
69. Representation of current time (24 hour clock)
A100033⎕TS A[3 6]':' A
70. Representation of current date (descending format)
A10003⎕TS A[5 8]'-' A
71. Representation of current time (12 hour clock)
(1⌽,' ::',3 26 010012 0 0|33⎕TS),'AP'[1+12⎕TS[4]],'M'
73. Removing duplicate rows XA2
((AA)=⍳⍴A2X.=⍉X)X
74. Conversion from hexadecimal to decimal XC
16⊥-⎕IO-'0123456789ABCDEF'⍳⍉X
75. Conversion of alphanumeric string into numeric XC1
10¯1+'0123456789'X
76. Value of polynomial with coefficients Y at points X XD1; YD1
(X∘.+,0)Y
77. Changing connectivity list X to a connectivity matrix XC2
A(×/B0 0+⌈/,X)0 A[⎕IO+B[1]⊥-⎕IO-X]1 BA
78. Present value of cash flows X at interest rate Y % XD1; YD0
(÷1+Y÷100)⊥⌽X
79. Justifying right XC
(1-(' '=X)1)X
80. Number of days in month X of years Y (for all leap years) XI0; YI
(12731 30)[X]-0¯1+2(X=2),[.1](0400|Y)-(0100|Y)-04|Y
81. Number of days in month X of years Y (for most leap years) XI0; YI
(12731 30)[X]-0¯1+2(X=2),[.1]04|Y
82. Encoding current date
100100|3⎕TS
83. Removing trailing blanks XC1
(1-(' '=X)1)X
84. Index of first non-blank, counted from the rear XC1
(' '=X)1
85. Indexing scattered elements XA; YI2
(,X)[⎕IO+(X)Y-⎕IO]
86. Conversion of indices Y of array X to indices of raveled X XA; YI2
⎕IO+(X)Y-⎕IO
87. Number of columns in array X as a scalar XA
0⊥⍴X
88. Future value of cash flows X at interest rate Y % XD1; YD0
(1+Y÷100)X
89. Sum of the elements of vector X XD1
1X
90. Last element of numeric vector X as a scalar XD1
0X
91. Last row of matrix X as a vector XA
0X
92. Integer representation of logical vectors XB
2X
93. Value of polynomial with coefficients Y at point X XD0; YD
XY

Encode

94. Conversion from decimal to hexadecimal (X=1..255) XI
'0123456789ABCDEF'[⎕IO+((⌈⌈/16⍟,X)16)X]
this alternative opens the range to 0..⌊/⍳0
'0123456789ABCDEF'[⎕IO+((1+⌊16⍟⌈/X+X=0)16)X]
95. All binary representations up to X (truth table) XI0
((21+X)2)0,⍳X
96. Representation of X in base Y XD0; YD0
((1+⌊YX)Y)X
97. Digits of X separately XI0
((1+⌊10X)10)X
98. Helps locating column positions 1..X XI0
1 010 101-⎕IO-⍳X
99. Conversion of characters to hexadecimal representation (⎕AV) XC1
,' ',⍉'0123456789ABCDEF'[⎕IO+16 16⊤-⎕IO-⎕AVX]
100. Polynomial with roots X XD1
((0,⍳⍴X)∘.=+~A)+.×(-X)×.*A((X)2)¯1+⍳2*⍴X
101. Index pairs of saddle points XD2
⎕IO+(X)⊤-⎕IO-(,(X=(X)⍴⌈X)X=⍉(⌽⍴X)⍴⌊/X)/⍳×/X
102. Changing connectivity matrix X to a connectivity list XC2
(,X)/1+A¯1+⍳×/AX
103. Matrix of all indices of X XA
⎕IO+(X)(⍳×/X)-⎕IO
104. Separating a date YYMMDD to YY, MM, DD XD
(3100)X
105. Indices of elements Y in array X XA; YA
⎕IO+(X)(-⎕IO)+(,XY)/⍳⍴,X
106. All pairs of elements of X and Y XI0; YI0
⎕IO+(X,Y)(X×Y)-⎕IO
107. Matrix for choosing all subsets of X (truth table) XA1
((X)2)¯1+⍳2*⍴X
108. All binary representations with X bits (truth table) XI0
(X2)¯1+⍳2*X
109. Incrementing cyclic counter X with upper limit Y XD; YD0
1+YX
110. Decoding numeric code ABBCCC into a matrix XI
10 100 1000X
111. Integer and fractional parts of positive numbers XD
0 1X

Logarithm

112. Number of decimals of elements of X XD1
10(('.'A)/AX)÷X
113. Number of sortable columns at a time using and alphabet X XC1
(1+⍴X)2*(A=¯1+A2*⍳128)1
114. Playing order in a cup for X ranked players XI0
,⍉(A2)(2*A2X)↑⍳X
115. Arithmetic precision of the system (in decimals)
⌊|10⍟|1-3×÷3
116. Number of digitpositions in integers in X XI
1+(X<0)+⌊10⍟|X+0=X
117. Number of digit positions in integers in X XI
1+⌊10(X=0)+X×(1 ¯10)[1+X<0]
118. Number of digits in positive integers in X XI
1+⌊10X+0=X

Branch

119. Case structure according to key vector G XA0; YI1; GA1
Y[GX]
120. Forming a transitive closure XB2
⎕LC⌈⍳∨/,(XXX.X)≠+X
121. Case structure with integer switch XI0; YI1
XY
122. For-loop ending construct XI0; YI0; GI0
Y⌈⍳GXX+1
123. Conditional branch to line Y XB0; YI0; Y>0
Y⌈⍳X
124. Conditional branch out of program XB0
0⌊⍳X
125. Conditional branch depending on sign of X XI0; YI1
Y[2X]
126. Continuing from line Y (if X>0) or exit XD0; YI0
Y××X
127. Case structure using levels with limits G XD0; GD1; YI1
(XG)/Y
128. Case structure with logical switch (preferring from start) XB1; YI1
X/Y
129. Conditional branch out of program XB0
0×⍳X

Execute

132. Test for symmetricity of matrix X XA2
⍎⍎'1','↑↓'[⎕IO+∧/(X)=⌽⍴X],'''0~0∊X=⍉X'''
133. Using a variable named according to X XA0; YA
'VAR',(X),'←Y'
134. Rounding to ⎕PP precision XD1
⍎⍕X
135. Convert character or numeric data into numeric XA1
⍎⍕X
136. Reshaping only one-element numeric vector X into a scalar XD1
⍎⍕X
137. Graph of F(X) at points X ('X'∊F) FA1; XD1
' *'[⎕IO+((¯1+⌊/A)+⍳1+(/A)-⌊/A)∘.=A.5+⍎F]
138. Conversion of each row to a number (default zero) XC2
(X.' ')\1↓⍎'0 ',,X,' '
139. Test for symmetricity of matrix X XA2
(¯7*A.=⌽AX)'0~0∊X=⍉X'
140. Execution of expression X with default value Y XD1
((X.=' ')/'Y'),X
141. Changing X if a new input value is given XA
X⍎,((2'X'),' ',[.5]A)[⎕IO+~' '.=A;]
142. Definite integral of F(X) in range Y with G steps ('X'∊F) FA1; GD0; YD1; Y ←→ 2
A+.×⍎F,0XY[1]+(A--/Y÷G)×0,⍳G
143. Test if numeric and conversion to numeric form XC1
1↓⍎'0 ',(/X' 0123456789')/X
144. Tests the social security number (Finnish) Y'01...9ABC...Z'; 10=⍴X
(¯1X)=((~Y'GIOQ')/Y)[1+31|⍎9X]
145. Conditional execution XB0
X/'EXPRESSION'
146. Conditional branch out of programs XB0
X/'→'
147. Using default value 100 if X does not exist XA
(¯3*2⎕NC 'X')'X100'
148. Conditional execution XB0
X'⍝ ...'
149. Giving a numeric default value for input XD0
1(,',⍳0'),X
150. Assign values of expressions in X to variables named in Y XC2; YC2
A⍎,',','(','0','⍴',Y,'←',X,')'
151. Evaluation of several expressions; results form a vector XA
⍎,',','(',',',X,')'
152. Sum of numbers in character matrix X XA2
⍎,'+',X
153. Indexing when rank is not known beforehand XA; YI
'X[',((¯1+⍴⍴X)';'),'Y]'

Format

154. Numeric headers (elements of X) for rows of table Y XD1; YA2
(37 0X∘.+,0),⍕Y
155. Formatting a numerical vector to run down the page XD1
X∘.+,0
156. Representation of current date (ascending format)
A⍕⌽3⎕TS A[(' '=A)/⍳⍴A]'.' A
157. Representation of current date (American)
A100|13⎕TS A[(' '=A)/⍳⍴A]'/' A
158. Formatting with zero values replaced with blanks XA
(A)B\(B,('0'A)' '¯1A)/,A' ',⍕X
159. Number of digit positions in scalar X (depends on ⎕PP) XD0
⍴⍕X
160. Leading zeroes for X in fields of width Y XI1; YI0; X0
0 1(2Y+1)X∘.+,10*Y
161. Row-by-row formatting (width G) of X with Y decimals per row XD2; YI1; GI0
((1,G)×⍴X)2 1 3(G,⍴X)(,G,[1.1]Y)⍕⍉X
163. Formatting X with H decimals in fields of width G XD; GI1; HI1
(,G,[1.1]H)X

Roll / Deal ?

164. Y-shaped array of random numbers within ( X[1],X[2] ] XI1; YI1
X[1]+?Y⍴--/X
165. Removing punctuation characters XA1
(~X' .,:;?''')/X
166. Choosing Y objects out of X with replacement (roll) YI; XI
?YX
167. Choosing Y objects out of X without replacement (deal) XI0; YI0
Y?X

Geometrical Functions

168. Arctan Y÷X XD; YD
((X0)ׯ3Y÷X+X=0)+○((X=0)×.5××Y)+(X<0)×1-2×Y<0
169. Conversion from degrees to radians XD
X×○÷180
170. Conversion from radians to degrees XD
X×180÷○1
171. Rotation matrix for angle X (in radians) counter-clockwise XD0
2 21 ¯1 1 1×2 1 1 2X

Factorial / Binomial !

172. Number of permutations of X objects taken Y at a time XD; YD
(!Y)×Y!X
173. Value of Taylor series with coefficients Y at point X XD0; YD1
+/Y×(X*A)÷!A¯1+⍳⍴Y
174. Poisson distribution of states X with average number Y XI; YD0
(*-Y)×(Y*X)÷!X
175. Gamma function XD0
!X-1
176. Binomial distribution of X trials with probability Y XI0; YD0
(A!X)×(Y*A)×(1-Y)*X-A-⎕IO-⍳X+1
177. Beta function XD0; YD0
÷Y×(X-1)!Y+X-1
178. Selecting elements satisfying condition X, others to 1 XB; YD
X!Y
179. Number of combinations of X objects taken Y at a time XD; YD
Y!X

Index Of

180. Removing elements Y from beginning and end of vector X XA1; YA
((A1)-⎕IO)(⎕IO-(A~XY)1)X
181. Alphabetical comparison with alphabets G XA; YA
(GX)<GY
183. Sum over elements of X determined by elements of Y XD1; YD1
X+.×Y∘.=((⍳⍴Y)=YY)/Y
184. First occurrence of string X in string Y XA1; YA1
((¯1+⍳⍴X)X∘.=Y)1
185. Removing duplicate rows XA2
((AA)=⍳⍴A⎕IO++X.≠⍉X)X
186. First occurrence of string X in matrix Y XA1; YA2; ¯1↑⍴Y←→X
(Y.=X)1
187. Indices of ones in logical vector X XB1
(+\X)⍳⍳+/X
188. Executing costly monadic function F on repetitive arguments XA1
(F B/X)[+\B(XX)=⍳⍴X]
189. Index of (first) maximum element of X XD1
X⍳⌈/X
190. Index of first occurrence of elements of Y XC1; YC1
/XY
191. Index of (first) minimum element of X XD1
X⍳⌊/X
192. Test if each element of X occurs only once XA1
/(XX)=⍳⍴X
193. Test if all elements of vector X are equal XA1
/⎕IO=XX
194. Interpretation of roman numbers XA
+/Aׯ1*A<1A0,(1000 500 100 50 10 5 1)['MDCLXVI'X]
195. Removing elements Y from end of vector X XA1; YA
(⎕IO-(~⌽XY)1)X
196. Removing trailing blanks XC1
(1-(' 'X)1)X
198. Index of last occurrence of Y in X (⎕IO-1 if not found) XA1; YA
((¯1 1)[2×⎕IO]+⍴X)-(X)Y
199. Index of last occurrence of Y in X (0 if not found) XA1; YA
(1+⍴X)-(X)Y
200. Index of last occurrence of Y in X, counted from the rear XA1; YA
(X)Y
201. Index of first occurrence of G in X (circularly) after Y XA1; YI0; GA
⎕IO+(X)|Y+(YX)G
202. Alphabetizing X; equal alphabets in same column of Y YC2; XC
(¯1↑⍴Y)|(,Y)X
203. Changing index of an unfound element to zero YA1; XA
(1+⍴Y)|YX
204. Replacing elements of G in set X with corresponding Y XA1, YA1, GA
A[B/⍳⍴B]Y[(BB≤⍴Y)/BXA,G] (G)A
205. Removing duplicate elements (nub) XA1
((XX)=⍳⍴X)/X
206. First word in X XC1
(¯1+X' ')X
207. Removing elements Y from beginning of vector X XA1; YA
(((~XY)1)-⎕IO)X
208. Removing leading zeroes XA1
(¯1+(X='0')0)X
209. Index of first one after index Y in X GI0; XB1
Y+(YX)1
210. Changing index of an unfound element to zero (not effective) XA; YA1
(XY)×YX
211. Indicator of first occurrence of each unique element of X XA1
(XX)=⍳⍴X
212. Inverting a permutation XI1
X⍳⍳⍴X
213. Index of first differing element in vectors X and Y XA1; YA1
(YX)1
214. Which elements of X are not in set Y (difference of sets) XA; YA1
(⎕IO+⍴Y)=YX
215. Changing numeric code X into corresponding name in Y XD; YD1; GC2
G[YX;]
216. Index of key Y in key vector X XA1; YA
XY
217. Conversion from characters to numeric codes XA
⎕AVX
218. Index of first satisfied condition in X XB1
X1

Outer Product ∘.! ∘. ∘.|

219. Pascal's triangle of order X (binomial coefficients) XI0
A∘.!A0,⍳X
220. Maximum table XI0
(X)∘.⌈⍳X
221. Number of decimals (up to Y) of elements of X XD; YI0
0+.((10*Y)×10*⎕IO-⍳Y+1)∘.|⌈X×10*Y
222. Greatest common divisor of elements of X XI1
/(/0=A∘.|X)/A⍳⌊/X
223. Divisibility table XI1
0=(⍳⌈/X)∘.|X
224. All primes up to X XI0
(2=+0=(X)∘.|⍳X)/X

Outer Product ∘.* ∘.× ∘.- ∘.+

225. Compound interest for principals Y at rates G % in times X XD; YD; GD
Y∘.×(1+G÷100)∘.*X
226. Product of two polynomials with coefficients X and Y XD1; YD1
+(⎕IO-⍳⍴X)X∘.×Y,0×1X
228. Shur product XD2; YD2
1 2 1 2X∘.×Y
229. Direct matrix product XD2; YD2
1 3 2 4X∘.×Y
230. Multiplication table XI0
(X)∘.×⍳X
231. Replicating a dimension of rank three array X Y-fold YI0; XA3
X[;,(Y1)∘.×⍳(X)[2];]
232. Array and its negative ('plus minus') XD
X∘.×1 ¯1
233. Move set of points X into first quadrant XD2
1 2 1X∘.-⌊/X
234. Test relations of elements of X to range Y; result in ¯2..2 XD; YD; 2=¯1↑⍴Y
+/×X∘.-Y
235. Occurrences of string X in string Y XA1; YA1
(Y[A∘.+¯1+⍳⍴X].=X)/A(A=1X)/⍳⍴A(1-⍴X)Y
236. Sum of common parts of matrices (matrix sum) XD2; YD2
1 2 1 2X∘.+Y
237. Adding X to each row of Y XD1; YD2
1 1 2X∘.+Y
238. Adding X to each row of Y XD1; YD2
1 2 1Y∘.+X
240. Adding X to each column of Y XD1; YD2
2 1 2X∘.+Y
241. Adding X to each column of Y XD1; YD2
1 2 2Y∘.+X
242. Hilbert matrix of order X XI0
÷¯1+(X)∘.+⍳X
243. Moving index of width Y for vector X XA1; YI0
(0,⍳(X)-Y)∘.+Y
244. Indices of subvectors of length Y starting at X+1 XI1; YI0
X∘.+⍳Y
245. Reshaping numeric vector X into a one-column matrix XD1
X∘.+,0
246. Annuity coefficient: X periods at interest rate Y % XI; YD
((A)Y÷100)÷A1-(1+Y÷100)∘.*-X

Outer Product ∘.< ∘. ∘. ∘.>

247. Matrix with X[i] trailing zeroes on row i XI1
X∘.<⌽⍳⌈/X
248. Matrix with X[i] leading zeroes on row i XI1
X∘.<⍳⌈/X
249. Distribution of X into intervals between Y XD; YD1
+/((¯1Y)∘.X)(1Y)∘.>X
250. Histogram (distribution barchart; down the page) XI1
' ⎕'[⎕IO+(⌽⍳⌈/A)∘.A+/(1+(/X)-⌊/X)∘.=X]
251. Barchart of integer values (down the page) XI1
' ⎕'[⎕IO+(⌽⍳⌈/X)∘.X]
252. Test if X is an upper triangular matrix XD2
/,(0X)A∘.A1↑⍴X
253. Number of ?s intersecting ?s (X=starts, Y=stops) XD1; YD1
+/A∧⍉AX∘.Y
254. Contour levels Y at points with altitudes X XD0; YD1
Y[+Y∘.X]
255. X×X upper triangular matrix XI0
(X)∘.≤⍳X
256. Classification of elements Y into X classes of equal size XI0; YD1
+/(A×X÷⌈/AY-⌊/Y)∘.¯1+⍳X
257. Matrix with X[i] trailing ones on row i XI1
X∘.≥⌽⍳⌈/X
258. Comparison table XI1
X∘.≥⍳⌈/X,0
259. Barchart of X with height Y (across the page) XD1; YD0
' ⎕'[⎕IO+X∘.(/X)×(Y)÷Y]
260. Barchart of integer values (across the page) XI1
' ⎕'[⎕IO+X∘.≥⍳⌈/X]
261. Matrix with X[i] leading ones on row i XI1
X∘.≥⍳⌈/X
263. Test if X is a lower triangular matrix XD2
/,(0X)A∘.A1↑⍴X
264. Test if X is within range [ Y[1],Y[2] ) XD; YD1
/X∘.Y
265. Ordinal numbers of words in X that indices Y point to XC1; YI
⎕IO++/Y∘.(' '=X)/⍳⍴X
266. Which class do elements of X belong to XD
+/X∘.0 50 100 1000
267. X×X lower triangular matrix XI0
(X)∘.≥⍳X
268. Moving all blanks to end of each row XC
(X)(,(+/A)∘.>-⎕IO-⍳¯1↑⍴X)\(,AX' ')/,X
269. Justifying right fields of X (lengths Y) to length G XA1; YI1; GI0
(,Y∘.>⌽(G)-⎕IO)\X
270. Justifying left fields of X (lengths Y) to length G XA1; YI1; GI0
(,Y∘.>(G)-⎕IO)\X

Outer Product ∘. ∘.=

271. Indices of elements of Y in corr. rows of X (X[i;]Y[i;]) XA2; YA2
1++/\1 2 1 3Y∘.X
273. Indicating equal elements of X as a logical matrix XA1
X∘.=(1 1⍉<\X∘.=X)/X
275. Changing connection matrix X (¯1 1) to a node matrix XI2
(1 ¯1∘.=⍉X)+.×⍳1↑⍴X
276. Sums according to codes G XA; YD; GA
(G∘.=X)+.×Y
277. Removing duplicate elements (nub) XA1
(1 1⍉<\X∘.=X)/X
278. Changing node matrix X (starts,ends) to a connection matrix XI2
-/(⍳⌈/,X)∘.=⍉X
279. Test if all elements of vector X are equal XB1
//0 1∘.=X
280. Test if elements of X belong to corr. row of Y (X[i;]Y[i;]) XA2; YA2; 1↑⍴X←→1↑⍴Y
/1 2 1 3X∘.=Y
281. Test if X is a permutation vector XI1
/1=+X∘.=⍳⍴X
282. Occurrences of string X in string Y XC1; YC1
((¯1+⍳⍴X)(X∘.=Y),0)/1+⍴Y
283. Division to Y classes with width H, minimum G XD; YI0; GD0; HD0
+/(Y)∘.=⌈(X-G)÷H
285. Repeat matrix XA1; YA1
(((¯1⌽~A)A(¯1X=1X),0)/Y)∘.=Y
286. X×X identity matrix XI0
(X)∘.=⍳X

Inner Product .× .× .+ ×. ×.* +.*

287. Maxima of elements of subsets of X specified by Y XA1; YB
A+(X-A/X).×Y
288. Indices of last non-blanks in rows XC
(' 'X).×⍳¯1↑⍴X
289. Maximum of X with weights Y XD1; YD1
Y.×X
290. Minimum of X with weights Y XD1; YD1
Y.×X
292. Extending a distance table to next leg XD2
XX.+X
293. A way to combine trigonometric functions (sin X cos Y) XD0; YD0
1 2×.X,Y
294. Sine of a complex number XD; 2=1↑⍴X
(2 21 6 2 5)×.X
295. Products over subsets of X specified by Y XA1; YB
X×.*Y
296. Sum of squares of X XD1
X+.*2
297. Randomizing random numbers (in ⎕LX in a workspace)
⎕RL⎕TS+.*2

Inner Product . <.< <. <. . >.>

298. Extending a transitive binary relation XB2
XX.X
299. Test if X is within range [ Y[1;],Y[2;] ) XD0; YD2; 1↑⍴Y ←→ 2
X<.<Y
300. Test if X is within range ( Y[1;],Y[2;] ] XD0; YD2; 1↑⍴Y ←→ 2
X<.Y
301. Test if X is within range ( Y[1;],Y[2;] ] XD; YD2; 1↑⍴Y ←→ 2
X<.Y
302. Test if the elements of X are ascending XD1
X<.1X
303. Test if X is an integer within range [ G,H ) XI0; GI0; HI0
~X.(X),G,H
304. Test if X is within range ( Y[1;],Y[2;] ] XD; YD2; 1↑⍴Y ←→ 2
(X,[.1+⍴⍴X]X)>.>Y

Inner Product . .= +. +.=

306. Removing trailing blank columns XC2
(⌽∨\' '.X)/X
307. Removing leading blank rows XC2
(\X.' ')X
308. Removing leading blank columns XC2
(\' '.X)/X
309. Index of first occurrences of rows of X as rows of Y XA, YA2
⎕IO++Y.≠⍉X
310. XY for rows of matrices XA2; YA2
⎕IO++X.≠⍉Y
311. Removing duplicate blank rows XC2
(A111,AX.' ')X
312. Removing duplicate blank columns XC2
(A1,¯1A' '.X)/X
313. Removing blank columns XC2
(' '.X)/X
314. Removing blank rows XC2
(X.' ')X
315. Test if rows of X contain elements differing from Y XA; YA0
X.Y
316. Removing trailing blank rows XC2
(-2↑+/\X.=' ')X
317. Removing duplicate rows XA2
(<\X.=⍉X)X
318. Removing duplicate rows XA2
(1 1⍉<\X.=⍉X)X
319. Test if circular lists are equal (excluding phase) XA1; YA1
/Y.=⍉(⍳⍴X)(2⍴⍴X)X
320. Test if all elements of vector X are equal XB1
X.=∨/X
321. Test if all elements of vector X are equal XB1
X.=∧/X
322. Rows of matrix X starting with string Y XA2; YA1
((((1↑⍴X),⍴Y)X).=Y)X
323. Occurrences of string X in string Y XA1; YA1
((-A)X.=(A,1+⍴Y)Y)/(Y)+1-AX
324. Test if vector Y is a row of array X XA; YA1
1X.=Y
325. Comparing vector Y with rows of array X XA; YA1
X.=Y
326. Word lengths of words in list X XC
X+.' '
327. Number of occurrences of scalar X in array Y XA0; YA
X+.=,Y
328. Counting pairwise matches (equal elements) in two vectors XA1; YA1
X+.=Y

Inner Product -.÷ +.÷ +.×

329. Sum of alternating reciprocal series Y÷X XD1; YD1
Y-.÷X
330. Limits X to fit in field Y[1 2] XD; YI1
(X1A)1A(2 2¯1 1 1 ¯.1)+.×10*(-1Y),-/Y+Y>99 0
331. Value of polynomial with coefficients Y at point X XD0; YD
(X*¯1+⍳⍴Y)+.×⌽Y
332. Arithmetic average (mean value) of X weighted by Y XD1; YD1
(Y+.×X)÷⍴X
333. Scalar (dot) product of vectors XD1; YD1
Y+.×X
334. Sum of squares of X XD1
X+.×X
335. Summation over subsets of X specified by Y XA1; YB
X+.×Y
336. Matrix product XD; YD; ¯1↑⍴X ←→ 1↑⍴Y
X+.×Y
337. Sum of reciprocal series Y÷X XD1; YD1
Y+.÷X

Scan \ \ ×\ -\

338. Groups of ones in Y pointed to by X (or trailing parts) XB; YB
YA=⌈\X×A+\Y>¯10,Y
339. Test if X is in ascending order along direction Y XD; YI0
/[Y]X=⌈\[Y]X
340. Duplicating element of X belonging to Y,1X until next found XA1; YB1
X[1⌈⌈\Y×⍳⍴Y]
341. Test if X is in descending order along direction Y XD; YI0
/[Y]X=⌊\[Y]X
342. Value of Taylor series with coefficients Y at point X XD0; YD1
+/Y××\1,X÷⍳¯1+⍴Y
343. Alternating series (1 ¯1 2 ¯2 3 ¯3 ...) XI0
-\X

Scan \ <\ \ \

346. Value of saddle point XD2
(<\,(X=(X)⍴⌈X)X=⍉(⌽⍴X)⍴⌊/X)/,X
348. First one (turn off all ones after first one) XB
<\X
350. Not first zero (turn on all zeroes after first zero) XB
\X
351. Running parity (≠\) over subvectors of Y indicated by X XB1; YB1
\YX\A¯10,AX/\¯10,Y
352. Vector (X[1]1),(X[2]0),(X[3]1),... XI1
\(⍳+/X)∊+\⎕IO,X
353. Not leading zeroes(\) in each subvector of Y indicated by X XB1; YB1
\(YX)\A¯10,A(YX)/Y
354. Leading ones (\) in each subvector of Y indicated by X XB1; YB1
~≠\(YX)\A¯10,A~(YX)/Y
355. Locations of texts between and including quotes XC1
A¯10,A\X=''''
356. Locations of texts between quotes XC1
A¯10,A\X=''''
357. Joining pairs of ones XB
X∨≠\X
358. Places between pairs of ones XB
(~X)∧≠\X
359. Running parity XB
\X

Scan \ \

360. Removing leading and trailing blanks XC1
((⌽∨\A)∧∨\A' 'X)/X
361. First group of ones XB
X∧∧\X=∨\X
362. Removing trailing blank columns XC2
(⌽∨\⌽∨' 'X)/X
363. Removing trailing blanks XC1
(⌽∨\' 'X)/X
364. Removing leading blanks XC1
(\' 'X)/X
365. Not leading zeroes (turn on all zeroes after first one) XB
\X
366. Centering character array X with ragged edges XC
(A-⌊0.5×(A+/\A)++/\A' '=⌽X)X
367. Decommenting a matrix representation of a function (⎕CR) XC2
(/A)(X)(,A)\(,A\('⍝'X)∨≠\X='''')/,X
369. Centering character array X with only right edge ragged XC
(-⌊0.5×+/\' '=⌽X)X
370. Justifying right XC
(-+/\' '=X)X
371. Removing trailing blanks XC1
(-+/\' '=X)X
372. Justifying left XC
(+/\' '=X)X
373. Editing X with Y '-wise XC1; YC1
((~(AX)'/'=Y)/AX),(1AY),(A+/\Y',')X
374. Removing leading blanks XC1
(+/\' '=X)X
375. Indices of first blanks in rows of array X XC
⎕IO++/\' 'X
377. Leading ones (turn off all ones after first zero) XB
\X

Scan +\

378. Vector (X[1]1),(Y[1]0),(X[2]1),... XI1; YI1
(⍳+/X,Y)∊+\1+¯10,((⍳+/X)∊+\X)\Y
379. Replicate Y[i] X[i] times (for all i) XI1; YA1
((X0)/Y)[+\¯1(⍳+/X)∊+\X]
380. Vector (Y[1]+⍳X[1]),(Y[2]+⍳X[2]),(Y[3]+⍳X[3]),... XI1; YI1; X←→Y
⎕IO++\1+((⍳+/X)∊+\⎕IO,X)\Y-¯11,X+Y
381. Replicate Y[i] X[i] times (for all i) XI1; YA1
Y[+\(⍳+/X)¯11++\0,X]
382. Replicate Y[i] X[i] times (for all i) XI1; YA1
Y[⎕IO++\(⍳+/X)⎕IO++\X]
383. Cumulative sums (+\) over subvectors of Y indicated by X XB1; YD1
+\Y-X\A-¯10,AX/+\¯10,Y
384. Sums over (+/) subvectors of Y, lengths in X XI1; YD1
A-¯10,A(+\Y)[+\X]
386. X first figurate numbers XI0
+\+\X
387. Insert vector for X[i] zeroes after i:th subvector XI1; YB1
((Y)++/X)∊+\1+¯10,(1Y)\X
388. Open a gap of X[i] after Y[G[i]] (for all i) XI1; YA1; GI1
(((Y)++/X)∊+\1+¯10,((⍳⍴Y)G)\X)\Y
389. Open a gap of X[i] before Y[G[i]] (for all i) XI1; YA1; GI1
(((Y)++/X)∊+\1+((⍳⍴Y)G)\X)\Y
390. Changing lengths X of subvectors to starting indicators XI1
A(+/X)0 A[+\¯1⎕IO,X]1 A
391. Changing lengths X of subvectors to ending indicators XI1
(⍳+/X)(+\X)-~⎕IO
392. Changing lengths X of subvectors to starting indicators XI1
(⍳+/X)∊+\⎕IO,X
393. Insert vector for X[i] elements before i:th element XI1
(⍳+/A)∊+\A1+X
394. Sums over (+/) subvectors of Y indicated by X XB1; YD1
A-¯10,A(1X)/+\Y
395. Fifo stock Y decremented with X units YD1; XD0
G-¯10,G0(+\Y)-X
396. Locations of texts between and including quotes XC1
A¯10,A2|+\X=''''
397. Locations of texts between quotes XC1
A¯10,A2|+\X=''''
398. X:th subvector of Y (subvectors separated by Y[1]) YA1; XI0
1(X=+\Y=1Y)/Y
399. Locating field number Y starting with first element of X YI0; XC1
(Y=+\X=1X)/X
400. Sum elements of X marked by succeeding identicals in Y XD1; YD1
A-¯10,A(Y1Y,0)/+\X
401. Groups of ones in Y pointed to by X XB1; YB1
YA(XY)/A+\Y>¯10,Y
402. ith starting indicators X XB1; YB1
(+\X)Y/⍳⍴Y
403. G:th subvector of Y (subvectors indicated by X) XB1; YA1; GI0
(G=+\X)/Y
404. Running sum of Y consecutive elements of X XD1; YI0
((Y-1)A)-0,(-Y)A+\X
405. Depth of parentheses XC1
+\('('=X)-¯10,')'=X
406. Starting positions of subvectors having lengths X XI1
+\¯1⎕IO,X
407. Changing lengths X of subvectors of Y to ending indicators XI1
(⍳⍴Y)(+\X)-~⎕IO
408. Changing lengths X of subvectors of Y to starting indicators XI1
(⍳⍴Y)∊+\⎕IO,X
409. X first triangular numbers XI0
+\X
410. Cumulative sum XD
+\X

Reduction / ÷/ -/ ×/

411. Complementary angle (arccos sin X) XD0
/¯2 1,X
412. Evaluating a two-row determinant XD2
-/×/0 1X
413. Evaluating a two-row determinant XD2
-/×0 1X
414. Area of triangle with side lengths in X (Heron's formula) XD1; 3 ←→ X
(×/(+/X÷2)-0,X)*.5
415. Juxtapositioning planes of rank 3 array X XA3
(×2 21,⍴X)2 1 3X
416. Number of rows in array X (also of a vector) XA
×/¯1↓⍴X
417. (Real) solution of quadratic equation with coefficients X XD1; 3 ←→ X
(-X[2]-¯1 1×((X[2]*2)/4,X[1 3])*.5)÷2×X[1]
418. Reshaping planes of rank 3 array to rows of a matrix XA3
(×/2 21,⍴X)X
419. Reshaping planes of rank 3 array to a matrix XA3
(×/2 2(X),1)X
420. Number of elements (also of a scalar) XA
×/X
421. Product of elements of X XD1
×/X
422. Alternating product XD
÷/X
423. Centering text line X into a field of width Y XC1; YI0
Y((⌊-/.5×Y,⍴X)' '),X
424. Alternating sum XD
-/X

Reduction / /

425. Test if all elements of vector X are equal XD1
(/X)=⌊/X
426. Size of range of elements of X XD1
(/X)-⌊/X
427. Conversion of set of positive integers X to a mask XI1
(⍳⌈/X)X
428. Negative infinity; the smallest representable value
/0
429. Vectors as column matrices in catenation beneath each other XA1/2; YA1/2
X,[1+.5×⌈/(⍴⍴X),⍴⍴Y]Y
430. Vectors as row matrices in catenation upon each other XA1/2; YA1/2
X,[.5×⌈/(⍴⍴X),⍴⍴Y]Y
431. Quick membership () for positive integers XI1; YI1
A(/X,Y)0 A[Y]1 A[X]
432. Positive maximum, at least zero (also for empty X) XD1
/X,0
433. Maximum of elements of X XD1
/X
434. Positive infinity; the largest representable value
/0
435. Minimum of elements of X XD1
/X

Reduction / / /

436. Test if all elements of vector X are equal XB1
/0 1X
437. Test if all elements of vector X are equal XB1
(/X)∨~∨/X
438. Test if all elements of vector X are equal XB1
(/X)=∨/X
439. Test if all elements of vector X are equal XB1
/X÷∨/X
440. Removing duplicate rows from ordered matrix X XA2
(¯11(/X¯1X),1)X
441. Vector having as many ones as X has rows XA2
/0/X
442. Test if X and Y have elements in common XA; YA1
/YX
443. None, neither XB
~∨/X
444. Any, anyone XB
/X
445. Test if all elements of vector X are equal XB1
/0 1X
446. Parity XB
/X

Reduction /

447. Number of areas intersecting areas in X XD3 (n × 2 × dim)
+/A∧⍉A/X[;A1;]2 1 3X[;(A1↑⍴X)2;]
448. Test if all elements of vector X are equal XB1
/X/1X
449. Comparison of successive rows XA2
/X=1X
450. Test if all elements of vector X are equal XA1
/X=1X
451. Test if X is a valid APL name XC1
/((1X)10A),XA'0..9A..Za..z'
452. Test if all elements of vector X are equal XA1
/X=1X
453. Identity of two sets XA1; YA1
/(XY),YX
454. Test if X is a permutation vector XI1
/(⍳⍴X)X
455. Test if all elements of vector X are equal XB1
~∧/X∊~X
456. Test if X is boolean XA
/,X0 1
457. Test if Y is a subset of X (Y X) XA; YA1
/YX
458. Test if arrays of equal shape are identical XA; YA; X ←→ Y
/,X=Y
459. Test if all elements of vector X are equal XA1
/X=X[1]
460. Blank rows XC2
/' '=X
461. All, both XB
/X

Reduction +/

462. Standard deviation of X XD1
((+/(X-(+/X)÷⍴X)*2)÷⍴X)*.5
463. Y:th moment of X XD1
(+/(X-(+/X)÷⍴X)*Y)÷⍴X
464. Variance (dispersion) of X XD1
(+/(X-(+/X)÷⍴X)*2)÷⍴X
465. Arithmetic average (mean value), also for an empty array XD
(+/,X)÷1⌈⍴,X
466. Test if all elements of vector X are equal XB1
0=(X)|+/X
467. Average (mean value) of columns of matrix X XD2
(+X)÷1(X),1
468. Average (mean value) of rows of matrix X XD2
(+/X)÷¯11,⍴X
469. Number of occurrences of scalar X in array Y XA0; YA
+/X=,Y
470. Average (mean value) of elements of X along direction Y XD; YI0
(+/[Y]X)÷(X)[Y]
471. Arithmetic average (mean value) XD1
(+/X)÷⍴X
472. Resistance of parallel resistors XD1
÷+/÷X
473. Sum of elements of X XD1
+/X
474. Row sum of a matrix XD2
+/X
475. Column sum of a matrix XD2
+X
476. Reshaping one-element vector X into a scalar XA1
+/X
477. Number of elements satisfying condition X XB1
+/X

Reverse

478. Scan from end with function XA
\X
479. The index of positive integers in Y XI; YI1
A9999⎕IO+⍴Y A[Y]⌽⍳⍴Y A[X]
480. 'Transpose' of matrix X with column fields of width Y XA2; GI0
((A)×1,Y)2 1 3(1Y,A(X)÷1,Y)X
482. Adding X to each column of Y XD1; YD; (X)=1↑⍴Y
Y+⍉(⌽⍴Y)X
483. Matrix with shape of Y and X as its columns XA1; YA2
(⌽⍴Y)X
484. Derivate of polynomial X XD1
¯1X×⌽¯1+⍳⍴X
485. Reverse vector X on condition Y XA1; YB0
,⌽[⎕IO+Y](1,⍴X)X
486. Reshaping vector X into a one-column matrix XA1
(1,⍴X)X
487. Avoiding parentheses with help of reversal
(1, ...)

Rotate

488. Vector (cross) product of vectors XD; YD
((1X)ׯ1Y)-(¯1X)×1Y
489. A magic square, side X XI0; 1=2|X
A(A(X)-⌈X÷2)(X,X)⍴⍳X×X
490. Removing duplicates from an ordered vector XA1
(¯11(X¯1X),1)/X
491. An expression giving itself
12211'''1⌽22⍴11⍴'''
492. Transpose matrix X on condition Y XA2; YB0
(Y1 2)X
493. Any element true (/) on each subvector of Y indicated by X XB1; YB1
(X/Y)A/1A(YX)/X
494. All elements true (/) on each subvector of Y indicated by X XB1; YB1
(X/Y)A/1A(YX)/X
495. Removing leading, multiple and trailing Y's XA1; YA0
(1A)(A1AY=X)/X
496. Changing starting indicators X of subvectors to lengths XB1
A-¯10,A(1X)/⍳⍴X
498. (Cyclic) compression of successive blanks XC1
(A1AX' ')/X
499. Aligning columns of matrix X to diagonals XA2
(1-⍳¯1↑⍴X)X
500. Aligning diagonals of matrix X to columns XA2
(¯1+⍳¯1↑⍴X)X
501. Diagonal matrix with elements of X XD1
0 ¯1(-⍳⍴X)((2⍴⍴X)0),X
502. Test if elements differ from previous ones (non-empty X) XA1
1,1X¯1X
503. Test if elements differ from next ones (non-empty X) XA1
(¯1X1X),1
504. Replacing first element of X with Y XA1; YA0
¯11X,Y
505. Replacing last element of X with Y XA1; YA0
1¯1Y,X
506. Ending points for X in indices pointed by Y XA1; YI1
1(⍳⍴X)Y
507. Leftmost neighboring elements cyclically XA
¯1X
508. Rightmost neighboring elements cyclically XA
1X

Transpose

509. Applying to columns action defined on rows XA1; YI0
... X
510. Retrieving scattered elements Y from matrix X XA2; YI2
1 1X[Y[1;];Y[2;]]
511. Successive transposes of G (X after Y: XYG) XI1; YI1
X[Y]G
512. Major diagonal of array X XA
(1*⍴X)X
513. Reshaping a 400×12 character matrix to fit into one page XC2
40 1202 1 310 40 12X
514. Transpose of planes of a rank three array XA3
1 3 2X
515. Major diagonal of matrix X XA2
1 1X
516. Selecting specific elements from a 'large' outer product XA; YA; GI1
GX∘.Y
517. Test for antisymmetricity of square matrix X XD2
~0X=-⍉X
518. Test for symmetricity of square matrix X XA2
~0X=⍉X
519. Matrix with X columns Y XI0; YD1
(X,⍴Y)Y

Maximum Minimum

520. Limiting X between Y[1] and Y[2], inclusive XD; YD1
Y[1]Y[2]X
521. Inserting vector Y to the end of matrix X XA2; YA1
(AX),[1](1A(X)0,⍴Y)Y
522. Widening matrix X to be compatible with Y XA2; YA2
((0 1×⍴Y)⌈⍴X)X
523. Lengthening matrix X to be compatible with Y XA2; YA2
((1 0×⍴Y)⌈⍴X)X
524. Reshaping non-empty lower-rank array X into a matrix XA; 2≥⍴⍴X
(1¯2↑⍴X)X
525. Take of at most X elements from Y XI; YA
(X⌊⍴Y)Y
526. Limiting indices and giving a default value G XA1; YI; GA0
(X,G)[(1+⍴X)Y]

Ceiling Floor

527. Reshaping X into a matrix of width Y XD, YI0
(((⍴,X)÷Y),Y)X
528. Rounding to nearest even integer XD
X+12|X
529. Rounding, to nearest even integer for .5 = 1||X XD
X+.5×.52|X
530. Rounding, to nearest even integer for .5 = 1||X XD
X+.5×.52|X
531. Arithmetic progression from X to Y with step G XD0; YD0; GD0
X+(G××Y-X)×(1+|⌊(Y-X)÷G)-⎕IO
532. Centering text line X into a field of width Y XC1; YI0
(-⌊.5×Y+⍴X)X
533. Test if integer XD
X=⌊X
534. Rounding currencies to nearest 5 subunits XD
.05×⌊.5+X÷.05
535. First part of numeric code ABBB XI
X÷1000
536. Rounding to X decimals XI; YD
(10*-X)×⌊0.5+Y×10*X
537. Rounding to nearest hundredth XD
0.01×⌊0.5+100×X
538. Rounding to nearest integer XD
0.5+X
539. Demote floating point representations to integers XI
X

Residue |

540. Test if X is a leap year XI
(0=400|X)(0100|X)0=4|X
541. Framing XC2
'_',[1]('|',X,'|'),[1]'¯'
542. Magnitude of fractional part XD
1||X
543. Fractional part with sign XD
(×X)|X
544. Increasing the dimension of X to multiple of Y XA1; YI0
X,(Y|-⍴X)0/X
545. Removing every Y:th element of X XA1; YI0
(0Y|⍳⍴X)/X
546. Taking every Y:th element of X XA1; YI0
(0=Y|⍳⍴X)/X
547. Divisors of X XI0
(0=A|X)/AX
548. Removing every second element of X XA1
(2|⍳⍴X)/X
549. Elements of X divisible by Y XD1; YD0/1
(0=Y|X)/X
550. Ravel of a matrix to Y[1] columns with a gap of Y[2] XA2; YI1
(A×Y[1]*¯1 1)(A(X)+(Y[1]|-1↑⍴X),Y[2])X
551. Test if even XI
~2|X
552. Last part of numeric code ABBB XI
1000|X
553. Fractional part XD
1|X

Magnitude |, Signum ×

554. Increasing absolute value without change of sign XD; YD
(×X)×Y+|X
555. Rounding to zero values of X close to zero XD; YD
X×Y≤|X
556. Square of elements of X without change of sign XD
X×|X
557. Choosing according to signum XD; YA1
Y[2X]

Expand \

558. Not first zero (≤\) in each subvector of Y indicated by X XB1; YB1
~(BX)(BX)\A>¯10,A(BX)/B~Y
559. First one (<\) in each subvector of Y indicated by X XB1; YB1
(YX)(YX)\A>¯10,A(YX)/Y
560. Replacing elements of X in set Y with blanks/zeroes XA0; YA1
A\(A~XY)/X
561. Replacing elements of X not in set Y with blanks/zeroes XA1; YA
A\(AXY)/X
562. Merging X and Y under control of G (mesh) XA1; YA1; GB1
AG\X A[(~G)/⍳⍴G]Y A
563. Replacing elements of X not satisfying Y with blanks/zeroes XA; YB1
Y\Y/X
564. Adding an empty row into X after rows Y XA2; YI1
(~((Y)+1⍴⍴X)Y+⍳⍴Y)X
565. Test if numeric XA1
00\0X
566. Adding an empty row into X after row Y XA2; YI0
((Y+1)≠⍳1+1⍴⍴X)X
567. Underlining words XC1
X,[⎕IO-.1](' 'X)\'¯'
568. Using boolean matrix Y in expanding X XA1; YB2
(Y)(,Y)\X
569. Spacing out text XC1
((2×⍴X)1 0)\X

Compress /

570. Lengths of groups of ones in X XB1
(A>0)/A(1A)-1+¯1A(~A)/⍳⍴A0,X,0
571. Syllabization of a Finnish word X XA1
(~A1,⍴X)/AA/⍳⍴A(1A,0)~X'aeiouyÄÖ'
572. Choosing a string according to boolean value G XC1; YC1; GB0
(G/X),(~G)/Y
573. Removing leading, multiple and trailing blanks XC1
(' '=1X)((1A,0)A' 'X)/X
575. Removing columns Y from array X XA; YI1
(~(¯1↑⍴X)Y)/X
576. Removing trailing blanks XC1
(¯1(' 'X)/⍳⍴X)X
577. Lengths of subvectors of X having equal elements XA1
(1A)-¯1A(A,1)/1+⍴A1,(1X)¯1X
578. Field lengths of vector X; G ←→ ending indices XA1; GI1
G-¯10,G(~⎕IO)+(((1X)¯1X),1)/⍳⍴X
580. Removing multiple and trailing blanks XC1
((1A,0)A' 'X)/X
581. Removing leading and multiple blanks XC1
(A¯10,A' 'X)/X
582. Removing multiple blanks XC1
(A¯11,A' 'X)/X
583. Removing duplicate Y's from vector X XA1; YA0
(A¯11,AXY)/X
584. Indices of all occurrences of elements of Y in X XA1; YA
(XY)/⍳⍴X
585. Union of sets, ? XA1; YA1
Y,(~XY)/X
586. Elements of X not in Y (difference of sets) XA1; YA
(~XY)/X
587. Rows of non-empty matrix X starting with a character in Y XA2; YA1
(X[;1]Y)X
588. Intersection of sets, ⍞ XA1; YA
(XY)/X
589. Reduction with function ⍺ in dimension Y, rank unchanged YI0; XA
((X)*Y≠⍳⍴⍴X) /[Y]X
590. Replacing all values X in G with Y XA0; YA0; GA
A[(A=X)/⍳⍴A,G]Y (G)A
591. Indices of all occurrences of Y in X XA1; YA0
(Y=X)/⍳⍴X
592. Replacing elements of G satisfying X with Y YA0; XB1; GA1
G[X/⍳⍴G]Y
593. Removing duplicates from positive integers XI1
A99990 A[X]1 A/9999
594. Indices of ones in logical vector X XB1
X/⍳⍴X
595. Conditional in text XB0
((~X)/'IN'),'CORRECT'
596. Removing blanks XA1
(' 'X)/X
597. Removing elements Y from vector X XA1; YA0
(XY)/X
598. Vector to expand a new element after each one in X XB1
(,X,[1.5]1)/,X,[1.5]~X
599. Reduction with FUNCTION without respect to shape XD
/,X
600. Reshaping scalar X into a one-element vector XA
1/X
601. Empty matrix XA2
0X
602. Selecting elements of X satisfying condition Y XA; YB1
Y/X

Take

603. Inserting vector X into matrix Y after row G XA1; YA2; GI0
Y[G;],[1]((1↓⍴Y)X),[1](2G)Y
604. Filling X with last element of X to length Y XA1; YI0
YX,Y¯1X
605. Input of row Y of text matrix X XC2; YI0
X[Y;](1↑⍴X)
606. First ones in groups of ones XB
X>((-⍴⍴X)¯1)0,X
607. Inserting X into Y after index G XA1; YA1; GI0
(GY),X,GY
608. Pairwise differences of successive columns (inverse of +\) XD
X-((-⍴⍴X)¯1)0,X
609. Leftmost neighboring elements XD
((-⍴⍴X)¯1)0,X
610. Rightmost neighboring elements XD
((-⍴⍴X)1)X,0
611. Shifting vector X right with Y without rotate XA1; YI0
(-⍴X)(-Y)X
612. Shifting vector X left with Y without rotate XA1; YI0
(X)YX
613. Drop of Y first rows from matrix X XA2; YI0
(2Y)X
614. Test if numeric XA
010X
615. Reshaping non-empty lower-rank array X into a matrix XA; 2≥⍴⍴X
(¯21 1,⍴X)X
616. Giving a character default value for input XC0
1,X
617. Adding scalar Y to last element of X XD; YD0
X+(-⍴X)Y
618. Number of rows in matrix X XA2
1↑⍴X
619. Number of columns in matrix X XA2
¯1↑⍴X
620. Ending points for X fields of width Y XI0; YI0
(X×Y)(-Y)1
621. Starting points for X fields of width Y XI0; YI0
(X×Y)Y1
622. Zero or space depending on the type of X (fill element) XA
10X
623. Forming first row of a matrix to be expanded XA1
1 8080X
624. Vector of length Y with X ones on the left, the rest zeroes XI0; YI0
YX1
625. Justifying text X to right edge of field of width Y YI0; XC1
(-Y)X

Drop

627. Starting points of groups of equal elements (non-empty X) XA1
1,(1X)¯1X
628. Ending points of groups of equal elements (non-empty X) XA1
((1X)¯1X),1
629. Pairwise ratios of successive elements of vector X XD1
(1X)÷¯1X
630. Pairwise differences of successive elements of vector X XD1
(1X)-¯1X
631. Differences of successive elements of X along direction Y XD; YI0
X-(-Y=⍳⍴⍴X)0,[Y]X
632. Ascending series of integers Y..X (for small Y and X) XI0; YI0
(Y-1)↓⍳X
633. First ones in groups of ones XB1
X>¯10,X
634. Last ones in groups of ones XB1
X>1X,0
635. List of names in X (one per row) XC2
1↓,',',X
636. Selection of X or Y depending on condition G XA0; YA0; GB0
''GX,Y
637. Restoring argument of cumulative sum (inverse of +\) XD1
X-¯10,X
638. Drop of Y first rows from matrix X XA2; YI0
(Y,0)X
639. Drop of Y first columns from matrix X XA2; YI0
(0,Y)X
640. Number of rows in matrix X XA2
¯1↓⍴X
641. Number of columns in matrix X XA2
1↓⍴X
642. Conditional drop of Y elements from array X XA; YI1; GB1
(Y×G)X
643. Conditional drop of last element of X XA1; YB0
(-Y)X

Member Of

644. Expansion vector with zero after indices Y XA1; YI1
~((Y)+⍴X)Y+⍳⍴Y
645. Boolean vector of length Y with zeroes in locations X XI; YI0
(~(Y)X)
646. Starting points for X in indices pointed by Y XA1; YI1
(⍳⍴X)Y
647. Boolean vector of length Y with ones in locations X XI; YI0
(Y)X
648. Check for input in range 1..X XA
(Y)∊⍳X
649. Test if arrays are identical XA; YA
~0X=Y
650. Zeroing elements of Y depending on their values YD; XD
Y×~YX
651. Test if single or scalar XA
1∊⍴,X
652. Test if vector XA
1∊⍴⍴X
653. Test if X is an empty array XA
0∊⍴X

Index Generator

654. Inverting a permutation XI1
A⍳⍴X A[X]A A
655. All axes of array X XA
⍳⍴⍴X
656. All indices of vector X XA1
⍳⍴X
657. Arithmetic progression of Y numbers from X with step G XD0; YD0; GD0
X+G×(Y)-⎕IO
658. Consecutive integers from X to Y (arithmetic progression) XI0; YI0
(X-⎕IO)+⍳1+Y-X
659. Empty numeric vector
0
660. Index origin (⎕IO) as a vector
1

Logical Functions ~

661. Demote non-boolean representations to booleans XB
0X
662. Test if X is within range ( Y[1],Y[2] ) XD; YD1
(Y[1]<X)X<Y[2]
663. Test if X is within range [ Y[1],Y[2] ] XD; YD1; 2=⍴Y
(Y[1]X)(XY[2])
664. Zeroing all boolean values XB
0X
666. Selection of elements of X and Y depending on condition G XD; YD; GB
(X×G)+Y×~G
667. Changing an index origin dependent result to be as ⎕IO=1 XI
(~⎕IO)+X
668. Conditional change of elements of Y to one according to X YD; XB
Y*~X

Comparison <≤>

669. X implies Y XB; YB
XY
670. X but not Y XB; YB
X>Y
671. Avoiding division by zero error (gets value zero) XD; YD
(0X)×Y÷X+0=X
672. Exclusive or XB; YB
XY
673. Replacing zeroes with corresponding elements of Y XD; YD
X+Y×X=0
674. Kronecker delta of X and Y (element of identity matrix) XI; YI
Y=X

Ravel ,

675. Catenating Y elements G after every element of X XA1; YI0; GA
,X,((X),Y)G
676. Catenating Y elements G before every element of X XA1; YI0; GA0
,(((X),Y)G),X
677. Merging vectors X and Y alternately XA1; YA1
,Y,[⎕IO+.5]X
678. Inserting Y after each element of X XA1; YA0
,X,[1.1]Y
679. Spacing out text XC1
,X,[1.1]' '
680. Reshaping X into a matrix of width Y XD, YI0
(((⍴,X),1)×Y*¯1 1)X
681. Temporary ravel of X for indexing with G XA; YA; GI
AX X,X X[G]Y XAX
682. Temporary ravel of X for indexing with G XA; YA; GI
A,X A[G]Y X(X)A
683. First column as a matrix XA2
X[;,1]
684. Number of elements (also of a scalar) XA
⍴,X

Catenate ,

685. Separating variable length lines XA1; YA1
X,⎕TC[2],Y
686. X×X identity matrix XI0
(X,X)1,X0
687. Array and its negative ('plus minus') XD
X,[.5+⍴⍴X]-X
688. Underlining a string XC1
X,[⎕IO-.1]'¯'
689. Forming a two-column matrix XA1; YA1
X,[1.1]Y
690. Forming a two-row matrix XA1; YA1
X,[.1]Y
691. Selection of X or Y depending on condition G XA0; YA0; GB0
(X,Y)[⎕IO+G]
692. Increasing rank of Y to rank of X XA; YA
((((⍴⍴X)-⍴⍴Y)1),⍴Y)Y
693. Identity matrix of shape of matrix X XD2
(X)1,0×X
694. Reshaping vector X into a two-column matrix XA1
((0.5×⍴X),2)X
696. Reshaping vector X into a one-row matrix XA1
(1,⍴X)X
697. Reshaping vector X into a one-column matrix XA1
((X),1)X
698. Forming a Y-row matrix with all rows alike (X) XA1; YI0
(Y,⍴X)X
699. Handling array X temporarily as a vector XA
(X) ... ,X
700. Joining sentences XA; YA1
Y,0X
701. Entering from terminal data exceeding input (printing) width XD
X0 2 1 2 5 8 0 4 5,

Indexing [ ]

702. Value of fixed-degree polynomial Y at points X YD1; XD
Y[3]+X×Y[2]+X×Y[1]
703. Number of columns in array X XA
(X)[⍴⍴X]
704. Number of rows in matrix X XA2
(X)[1]
705. Number of columns in matrix X XA2
(X)[2]
706. Conditional elementwise change of sign YD; XB
Y×(1 ¯1)[1+X]
707. Selection depending on index origin XA1
X[2×⎕IO]
708. Indexing with boolean value X (plotting a curve) XB
' *'[⎕IO+X]
709. Indexing independent of index origin XA1; YI
X[⎕IO+Y]
710. Selection depending on index origin XA1
X[1]
711. Zeroing a vector (without change of size) XD1
X[]0
712. First column as a vector XA2
X[;1]

Shape

713. Rank of array X XA
⍴⍴X
715. Duplicating vector X Y times XA1; YI0
(Y×⍴X)X
716. Adding X to each row of Y XD1; YD; (X)=¯1↑⍴Y
Y+(Y)X
717. Array with shape of Y and X as its rows XA1; YA
(Y)X
718. Number of rows in matrix X XA2
1⍴⍴X

Reshape

720. Forming an initially empty array to be expanded
0 800
721. Output of an empty line XA
0X
722. Reshaping first element of X into a scalar XA
''X
723. Corner element of a (non-empty) array XA
1X

Arithmetic + - × ÷

724. Continued fraction
123456 ...
725. Force 0÷0 into DOMAIN ERROR in division XD; YD
Y×÷X
726. Conditional elementwise change of sign XD; YB; X ←→ Y
Xׯ1*Y
727. Zero array of shape and size of X XD
0×X
728. Selecting elements satisfying condition Y, zeroing others XD; YB
Y×X
729. Number and its negative ('plus minus') XD0
1 ¯1×X
730. Changing an index origin dependent result to be as ⎕IO=0 XI
-⎕IO-X
731. Changing an index origin dependent argument to act as ⎕IO=1 XI
(⎕IO-1)+X
732. Output of assigned numeric value XD
+X
733. Changing an index origin dependent argument to act as ⎕IO=0 XI
⎕IO+X
734. Selecting elements satisfying condition Y, others to one XD; YB
X*Y

Miscellaneous

736. Setting a constant with hyphens
⎕LX
737. Output of assigned value XA
X
738. Syntax error to stop execution
*
888. Meaning of life
⍎⊖⍕⊃⊂|⌊-*+○⌈×÷!⌽⍉⌹~⍴⍋⍒,⍟?⍳0