From a29c6789618ab22f81d2e6f971e53b802a03e144 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Thu, 10 Sep 2020 22:33:14 -0400 Subject: Implement Windows without pervasion --- src/r.bqn | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/r.bqn b/src/r.bqn index 808cbf79..66d3ef32 100644 --- a/src/r.bqn +++ b/src/r.bqn @@ -241,6 +241,22 @@ _takeDrop←{ Take ← ⟨"↑" ⋄ 1-=⟜| ⋄ { 𝔽⍟(𝕨⊸<)a←|𝕩 ⋄ (0<𝕩)◶⟨¯∞⍟(<⟜0)⌜+⟜(𝕨+𝕩)⌜, ¯∞⍟(𝕨⊸≤)⌜⟩↕a }⟩_takeDrop Drop ← ⟨"↓" ⋄ 1-0⊸= ⋄ { 𝔽 ⋄ 0⊸<◶⟨↕0⌈+,<∘⊢+⌜·↕0⌈-⟩ }⟩_takeDrop +Windows←{ + "𝕨↕𝕩: 𝕩 must be an array" ! IsArray 𝕩 + "𝕨↕𝕩: 𝕨 must have rank at most 1" ! 1≥=𝕨 + r←≠𝕨↩Deshape 𝕨 + 𝕨{ + "𝕨↕𝕩: length of 𝕨 must be at most rank of 𝕩" ! r≤=𝕩 + "𝕨↕𝕩: 𝕨 must consist of natural numbers" ! ×´Nat⌜𝕨 + s←≢𝕩 + l←(1+⊑⟜s-⊑⟜𝕨)⌜↕r + "𝕨↕𝕩: Window length 𝕨 must be at most axis length plus one" ! ×´0⊸≤⌜l + k←1×´t←(r⊸+⌜↕s≠⊸-r)⊏s + str ← Reverse ×`⟨k⟩∾{(s⊑˜𝕩⊸-)⌜↕𝕩}r-1 + ⊑⟜(⥊𝕩)⌜ k +⌜⟜(t⥊↕)˜⍟(1-=⟜1) l +⌜○(+⌜´str{𝕨⊸×⌜↕𝕩}¨⊢) 𝕨 + }⍟(0)<⌜⊸⊏⟜𝕩¨s(¬+⌜○Range⊢)⥊𝕨}⍟(0<≠𝕨)𝕩 -} - ↕ ↩ Range ⊘ Windows ⌽ ← Reverse ⊘ (Rot _onAxes_ 0) / ← Indices ⊘ Replicate -- cgit v1.2.3