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←{
⎕IO←0
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×≢⍴⍺)∘⍴¨⍳⍴⍺))0⍴⍨⍴diff ⍝ 1 where i=j
d←↑⍸diff×~ij ⍝ Diff_K index pairs
spli2←{(s⍴1↑⍨2÷⍨s←≢⍵)⊂⍵} ⍝ Split even length vector in 2
spli2⍤1⊢d ⍝ Split each index pair
}
|