aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdzref_full38
1 files changed, 20 insertions, 18 deletions
diff --git a/dzref_full b/dzref_full
index 8eca20a6..ec77a0d7 100755
--- a/dzref_full
+++ b/dzref_full
@@ -14,6 +14,7 @@ impl ← "β—Ά ← {𝕨((𝕨𝔽𝕩)βŠ‘π•˜){𝔽}𝕩} # LIMITED to numbe
β—‹ ← {(𝔾𝕨)𝔽𝔾𝕩}
⊸ ← {(π”½π•¨βŠ£π•©)𝔾𝕩}
⟜ ← {(π•¨βŠ£π•©)𝔽𝔾𝕩}
+⍟ ← {𝕨((𝕨𝔾𝕩)βŠ‘βŠ’β€Ώπ•—){𝔽}𝕩} # LIMITED to boolean right operand result
# LIMITED to numeric arguments for scalar cases
√ ← β‹†βŸœ(Γ·2) ⊘ (β‹†βŸœΓ·Λœ)
@@ -44,7 +45,7 @@ _fold←{
# After defining _perv, we apply it to all scalar functions,
# making them pervasive. I'm not going to write that out.
-ToArray ← IsArrayβ—Ά<β€ΏβŠ’
+ToArray ← <⍟(Β¬IsArray)
∾ ← {k←≠𝕨⋄kβŠΈβ‰€β—ΆβŸ¨βŠ‘βŸœπ•¨β‹„-⟜kβŠ‘π•©ΛœβŸ©βŒœβ†•k+≠𝕩} # LIMITED to two vector arguments
@@ -84,9 +85,9 @@ Reshape←{
! ∧´Nat¨𝕨
l←×´𝕨
n←×´≒𝕩
- 𝕨β₯Š(l=n)β—Ά{
+ 𝕨β₯Š{
𝕩(0<n)β—ΆβŸ¨Type⊸(⊣⌜)β‹„β₯ŠβŠΈ{βŠ‘βŸœπ•¨Β¨n|𝕩}βŸ©β†•l
- }β€ΏβŠ’π•©
+ }⍟(lβ‰ n)𝕩
}⟜ToArray
β₯Š ↩ Deshape ⊘ Reshape
@@ -120,11 +121,11 @@ DropV← {βŠ‘βŸœπ•©Β¨π•¨+↕𝕨-Λœβ‰ π•©}
Cell ← DropVβŸœβ‰’
Pair ← {βŸ¨π•©βŸ©} ⊘ {βŸ¨π•¨,π•©βŸ©}
-Merge←(0<β‰ βˆ˜β₯Š)β—ΆβŠ’β€Ώ{
+Merge←{
cβ†β‰’βŠ‘π•©
! ∧´β₯Š(c≑≒)¨𝕩
π•©βŠ‘βŸœβ₯ŠΛœβŒœcβ₯Šβ†•Γ—Β΄c
-}
+}⍟(0<β‰ βˆ˜β₯Š)
> ↩ Merge ⊘ >
≍ ← >∘Pair
_ranks ← {⟨2⟩⊘⟨1,0⟩((⊣-1+|)ΛœβŸœβ‰ βŠ‘Β¨<∘⊒)β₯Šβˆ˜π”½}
@@ -151,25 +152,15 @@ _scan←{
! IsArray 𝕩
! 1≀=𝕩
F←𝔽
- (0<β‰ βˆ˜β₯Š)β—ΆβŠ’β€Ώ{
+ {
r←β₯Šπ•© β‹„ l←≠𝕩 β‹„ c←×´1 Cell 𝕩
{r↩r𝕩_amendΛœπ•¨Fβ—‹(βŠ‘βŸœr)𝕩}⟜(c⊸+)¨↕c-Λœβ‰ r
(≒𝕩)β₯Šr
- }𝕩
-}
-` ← _scan
-_repeat_←{
- n←𝕨𝔾𝕩
- f←0βŠ‘π•¨βŸ¨π”½βŸ©βŠ˜βŸ¨π•¨π”½βŠ’βŸ©π•©
- l←u←0
- {!Int𝕩⋄l↩lβŒŠπ•©β‹„u↩uβŒˆπ•©}βš‡0 n
- a←𝕩⋄_p←{π”½βˆ˜βŠ£`(1+𝕩)β₯Š<a}
- pos←F _p u β‹„ neg←F⁼_p-l
- (|βŠ‘<⟜0βŠ‘posβ€Ώneg˜)βš‡0 n
+ }⍟(0<β‰ βˆ˜β₯Š)𝕩
}
+` ← _scan
βŽ‰ ← _rankOp_
-⍟ ← _repeat_
˘ ← βŽ‰Β―1
_insert←{
! 1≀=𝕩
@@ -370,6 +361,17 @@ ProgressiveIndexOf ← {π•¨βŠβ—‹(β‰Λ˜βŸœOccurrenceCountπ•¨βŠΈβŠ)𝕩}
∧ ↩ β‹βŠΈβŠ ⊘ ∧
∨ ↩ β’βŠΈβŠ ⊘ ∨
βŠ’ ← OccurrenceCount⊘ ProgressiveIndexOf
+
+_repeat_←{
+ n←𝕨𝔾𝕩
+ f←0βŠ‘π•¨βŸ¨π”½βŸ©βŠ˜βŸ¨π•¨π”½βŠ’βŸ©π•©
+ l←u←0
+ {!Int𝕩⋄l↩lβŒŠπ•©β‹„u↩uβŒˆπ•©}βš‡0 n
+ a←𝕩⋄_p←{π”½βˆ˜βŠ£`(1+𝕩)β₯Š<a}
+ pos←F _p u β‹„ neg←F⁼_p-l
+ (|βŠ‘<⟜0βŠ‘posβ€Ώneg˜)βš‡0 n
+}
+⍟ ↩ _repeat_
"
X←Raw←{≀4}