From d620ce201b4e59265cf645cf4649da1462d05d79 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Tue, 1 Sep 2020 11:29:12 -0400 Subject: =?UTF-8?q?Support=20more=20inverses:=20=C2=AC=E2=8A=A2=E2=8A=A3?= =?UTF-8?q?=E2=88=BE=E2=89=8D=E2=86=91=E2=86=93=E2=86=95=E2=8C=BD=E2=8A=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/r.bqn | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/r.bqn b/src/r.bqn index de302385..21db791e 100644 --- a/src/r.bqn +++ b/src/r.bqn @@ -463,6 +463,22 @@ ProgressiveIndexOf ← {𝕨⊐○(≍˘⟜OccurrenceCount𝕨⊸⊐)𝕩} ◶ ↩ {𝕨((𝕨𝔽𝕩)⊑𝕘){𝔽}𝕩} # Same definition, new Pick IA ← "Inverse failed"⊸! +IX ← "Inverse does not exist"⊸! +_invChk_ ← {i←𝕨𝔽𝕩⋄IX 𝕩≡𝕨𝔾i⋄i} +GroupIndsInv ← { + IA 1==𝕩 + j←∾𝕩 + IA∧´Nat⌜j + g←GroupLen j + IX∧´g≤1 + o←/¬g + (⍋j∾o)⊏(/≠¨𝕩)∾¯1¨o +} +GroupInv ← { + IA 1==𝕨 + IA ∧´Nat⌜𝕨 + (⊔𝕨) ⍋⊸⊏○∾ 𝕩 +} inverse ← {(⊑(0⊏𝕩)⊐<) ⊑ ((1⊏𝕩)∾⟨"Inverse not found"!0˜⟩)˜} ⍉ (2∾˜2÷˜≠)⊸⥊ ⟨ +, +⊘(-˜) -, - @@ -470,11 +486,21 @@ inverse ← {(⊑(0⊏𝕩)⊐<) ⊑ ((1⊏𝕩)∾⟨"Inverse not found"!0˜⟩ ÷, ÷ ⋆, Log _perv √, ⋆⟜2⊘(⋆˜) - ∧, ⊢⊘(÷˜) - ∨, ⊢⊘(-˜÷1-⊢) - <, {IA IsArray𝕩⋄IA 0==𝕩⋄⊑𝕩}⊘(IA∘0) + ∧, ⊢_invChk_∧⊘(÷˜) + ∨, ⊢_invChk_∨⊘(-˜÷1-⊢) + ¬, ¬ + <, {IX IsArray𝕩⋄IX 0==𝕩⋄⊑𝕩}⊘(IA∘0) + ⊢, ⊢ + ⊣, ⊢⊘(⊢⊣IX∘≡) + ∾, IA∘0 ⊘ {d←𝕩-○=𝕨⋄IX(0⊸≤∧≤⟜1)d⋄l←d◶1‿≠𝕨⋄IX l≤≠𝕩⋄IX 𝕨≡d◶⟨⊏,l⊸↑⟩𝕩⋄l↓𝕩} + ≍, {IX 1=≠𝕩⋄⊏𝕩} ⊘ {IX 2=≠𝕩⋄IX 𝕨≡⊏𝕩⋄1⊏𝕩} + ↑, ¯1⊸⊑_invChk_↑ ⊘ (IA∘0) + ↓, ⊑_invChk_↓ ⊘ (IA∘0) + ↕, ≢_invChk_↕ ⊘ (IA∘0) # Should trace edge and invChk + ⌽, ⌽ ⊘ (-⊸⌽) ⍉, TransposeInv ⊘ ReorderAxesInv - /, {IA 1==𝕩⋄IA∧´Nat⌜𝕩⋄IA(∧´¯1⊸↓≤1⊸↓)𝕩⋄GroupLen𝕩}⊘(IA∘0) + /, {IA 1==𝕩⋄IA∧´Nat⌜𝕩⋄IX(∧´¯1⊸↓≤1⊸↓)𝕩⋄GroupLen𝕩}⊘(IA∘0) + ⊔, GroupIndsInv ⊘ GroupInv ⟩ ⁼ ← {Inverse 𝕗} -- cgit v1.2.3