m0=: i. | First y non-negative integers |
m1=: Ai=: >:@i. | Augmented integers (begin at 1) |
m2=: Ei=: i.@>: | Extended integers (0 to y inclusive) |
m3=: Si=: -Ei@+: | Symmetric integers (-y to y inclusive) |
m4=: grid=: +`(*i.)/ | General grid (2{y steps from 0{y by 1{y) |
m5=: cb=: ] {. 1 _1"_ $~ >: - 2&| | Checkerboard. Try box cb 2 3 4 5 |
m6=: box=: <"2 | Box rank 2 cells (for readable display) |
m7=: CB=: *cb@$ | Alternate signs of atoms of y. |
m8=: bcb=: _1&=@cb | Boolean checkerboard |
m9=: {. 0 1"_ $~ ] + 2&|@>: | " |
m10=: _1: ^ m9 | Checkerboard |
a11=: syft=: (/~)(@Si) | Symmetric function tables |
v12=: WRAP=: wrap : (wrap@]^:[) | Wrap (monad) and repeated wrap (dyad) |
m13=: wrap=: RL@(,.(next+i.@#))^:4 | Wrap argument with successive integers |
m14=: RL=: |.@|: | Roll table to left |
m15=: next=: >:@(>./)@, | Next integer after largest in table |
The first four phrases give commonly useful integer lists, and the fifth allows specification of the beginning value, the step size, and the number of steps. For example: |
(m0 ; Ai ; Ei ; Si) 3
+------------------------------------+
¦0 1 2¦1 2 3¦0 1 2 3¦3 2 1 0 _1 _2 _3¦
+------------------------------------+
(*/~ ; !/~) Si 3
+-------------------------------------+
¦ 9 6 3 0 _3 _6 _9¦1 0 0 0 _1 _4 _10¦
¦ 6 4 2 0 _2 _4 _6¦3 1 0 0 1 3 6¦
¦ 3 2 1 0 _1 _2 _3¦3 2 1 0 _1 _2 _3¦
¦ 0 0 0 0 0 0 0¦1 1 1 1 1 1 1¦
¦_3 _2 _1 0 1 2 3¦0 0 0 0 1 0 0¦
¦_6 _4 _2 0 2 4 6¦0 0 0 0 _1 1 0¦
¦_9 _6 _3 0 3 6 9¦0 0 0 0 1 _2 1¦
+-------------------------------------+
grid 3 4 5
3 7 11 15 19
Phrases 5-10 give various checkerboard patterns. Note the alternation along each axis: |
box cb 2 3 4 5
+--------------------------------------------+
¦ 1 _1 1 _1 1¦_1 1 _1 1 _1¦ 1 _1 1 _1 1¦
¦_1 1 _1 1 _1¦ 1 _1 1 _1 1¦_1 1 _1 1 _1¦
¦ 1 _1 1 _1 1¦_1 1 _1 1 _1¦ 1 _1 1 _1 1¦
¦_1 1 _1 1 _1¦ 1 _1 1 _1 1¦_1 1 _1 1 _1¦
+--------------+--------------+--------------¦
¦_1 1 _1 1 _1¦ 1 _1 1 _1 1¦_1 1 _1 1 _1¦
¦ 1 _1 1 _1 1¦_1 1 _1 1 _1¦ 1 _1 1 _1 1¦
¦_1 1 _1 1 _1¦ 1 _1 1 _1 1¦_1 1 _1 1 _1¦
¦ 1 _1 1 _1 1¦_1 1 _1 1 _1¦ 1 _1 1 _1 1¦
+--------------------------------------------+
CB i. 3 4
0 _1 2 _3
_4 5 _6 7
8 _9 10 _11
Phrase 11 is an adverb that produces function tables on symmetric arguments:
|
(+syft ; *syft ; !syft) 3
+---------------------------------------------------------+
¦6 5 4 3 2 1 0¦ 9 6 3 0 _3 _6 _9¦1 0 0 0 _1 _4 _10¦
¦5 4 3 2 1 0 _1¦ 6 4 2 0 _2 _4 _6¦3 1 0 0 1 3 6¦
¦4 3 2 1 0 _1 _2¦ 3 2 1 0 _1 _2 _3¦3 2 1 0 _1 _2 _3¦
¦3 2 1 0 _1 _2 _3¦ 0 0 0 0 0 0 0¦1 1 1 1 1 1 1¦
¦2 1 0 _1 _2 _3 _4¦_3 _2 _1 0 1 2 3¦0 0 0 0 1 0 0¦
¦1 0 _1 _2 _3 _4 _5¦_6 _4 _2 0 2 4 6¦0 0 0 0 _1 1 0¦
¦0 _1 _2 _3 _4 _5 _6¦_9 _6 _3 0 3 6 9¦0 0 0 0 1 _2 1¦
+---------------------------------------------------------+
The final phrases produce spirals by wrapping a table (or by default a list or scalar) in a blanket of successive integers: |
]t=: i. 2 3
0 1 2
3 4 5
(RL t) ; (WRAP 0) ; (3 WRAP 0)
+------------------------------+
¦2 5¦6 7 8¦42 43 44 45 46 47 48¦
¦1 4¦5 0 1¦41 20 21 22 23 24 25¦
¦0 3¦4 3 2¦40 19 6 7 8 9 26¦
¦ ¦ ¦39 18 5 0 1 10 27¦
¦ ¦ ¦38 17 4 3 2 11 28¦
¦ ¦ ¦37 16 15 14 13 12 29¦
¦ ¦ ¦36 35 34 33 32 31 30¦
+------------------------------+
|