<<     >>

APL Exercises 0
Beginnings
 

⎕io←0 throughout.
 

0.0 Outer Product (Function Table)

0.0.1 Boolean Functions

Predict the result of each expression before evaluating it.

∘.^ ⍨ 0 1
∘.∨ ⍨ 0 1
∘.⌊ ⍨ 0 1
∘.⌈ ⍨ 0 1
∘.= ⍨ 0 1
∘.≠ ⍨ 0 1
∘.< ⍨ 0 1
∘.≤ ⍨ 0 1
∘.≥ ⍨ 0 1
∘.> ⍨ 0 1
∘.⍲ ⍨ 0 1
∘.⍱ ⍨ 0 1
 
∘.= ⍨ ⍳11
∘.≠ ⍨ ⍳11
∘.< ⍨ ⍳11
∘.≤ ⍨ ⍳11
∘.≥ ⍨ ⍳11
∘.> ⍨ ⍳11

•  Which of the function tables are symmetric? (t≡⍉t)
What can you say about the functions whose tables are symmetric?

If f is a boolean function (with 0-1 arguments and results), ∘.f⍨0 1 is its truth table and the ravel of that is its intrinsic vector. For f with valence n there are 2*2*n possible intrinsic vectors. Find an APL function for each of the following intrinsic vectors:

0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

0.0.2 Arithmetic Functions

Predict the result of each expression before evaluating it.

∘.+ ⍨ ⍳11
∘.- ⍨ ⍳11
∘.× ⍨ ⍳11
∘.÷ ⍨ ⍳11
∘.⌊ ⍨ ⍳11
∘.⌈ ⍨ ⍳11
∘.| ⍨ ⍳11
∘.∧ ⍨ ⍳11
∘.∨ ⍨ ⍳11
∘.! ⍨ ⍳11
∘.* ⍨ ⍳11
∘.⍟ ⍨ 1+⍳11

•  Which of the function tables are symmetric?
Why is it ∘.⍟ ⍨ 1+⍳11 and not ∘.⍟ ⍨ ⍳11 ?
If t←x∘.f y , what is the shape of t ?
If x and y are vectors and t←x∘.f y , how is t[i;j] computed?


0.1 Reduction

0.1.1 Boolean Functions

Predict the result of each expression before evaluating it.

odometer←{⍉⍵⊤⍳×/⍵}
b←odometer 5⍴2
∧/b
∨/b
⌊/b
⌈/b
=/b
≠/b
≤/b
≥/b
>/b
⍲/b
⍱/b

0.1.2 Arithmetic Functions

Predict the result of each expression before evaluating it.

x←1+?7⍴20
+/x
-/x
×/x
÷/x
⌊/x
⌈/x
|/x
∧/x
∨/x
!/x
*/x
⍟/x

0.1.3 Model

•  Write a d-operator Reduce such that (f/v)≡f Reduce v for vector v .

0.2 Scan

0.2.1 Boolean Functions

Predict the result of each expression before evaluating it.

b←odometer 5⍴2
∧\b
∨\b
⌊\b
⌈\b
=\b
≠\b
<\b
≤\b
≥\b
>\b
⍲\b
⍱\b

•  Describe in words what each of the above scans does on a boolean vector b . For example, ∧\b is “all 1s until the first 0; 0 thereafter”.

0.2.2 Arithmetic Functions

Predict the result of each expression before evaluating it.

x←1+?7⍴20
+\x
-\x
×\x
÷\x
⌊\x
⌈\x
|\x
∧\x
∨\x
!\x
*\x
⍟\x

0.2.3 Model

•  Write a d-operator Scan such that (f\v)≡f Scan v for vector v .