aboutsummaryrefslogtreecommitdiff
path: root/challenge-056/richard-park/apl/Diff_K.aplf
blob: 38c7c02bbfe13fdb0afddb989b4f17bd88b71a5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 Diff_K{
     ⎕IO0
     diff=∘.-                      ⍝ k = A[i]-A[j] for all i,j
⍝ Basic case: k≠0 and ⍺ is a vector (list)
⍝ Example:
⍝       2 7 9 Diff_K 2
⍝ 2 1
     (0)(1=≢⍴):↑⍸diff
⍝ General case
⍝ Example:
⍝       (2 2⍴⍳4) Diff_K 2
⍝ ┌───┬───┐
⍝ │1 0│0 0│
⍝ ├───┼───┤
⍝ │1 1│0 1│
⍝ └───┴───┘
     ij(1@(,(2×≢⍴)¨⍳⍴))0diff   ⍝ 1 where i=j
     d↑⍸diff×~ij                      ⍝ Diff_K index pairs
     spli2{(s12÷s)}          ⍝ Split even length vector in 2
     spli21d                         ⍝ Split each index pair
 }