aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-08 12:27:51 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-08 12:27:51 -0400
commitb82932e244f6670ec56e200740d1dacc70a80815 (patch)
treeb95d1ce9dd3766b9fcc2d2fed778161ca60ba1ba /src
parentd232168a333f9b0a7675ab3829f0c34af0783883 (diff)
Avoid using Reshape extension most of the time
Diffstat (limited to 'src')
-rw-r--r--src/r.bqn23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/r.bqn b/src/r.bqn
index 264245a1..71b09e5b 100644
--- a/src/r.bqn
+++ b/src/r.bqn
@@ -111,8 +111,6 @@ _under_←{
sβ₯Š{e=𝕩}β—ΆβŸ¨βŠ‘βŸœ(β₯Šπ•©),{𝕩⋄r←(jβŠ‘g)βŠ‘vβ‹„e↩P j↩1+jβ‹„r}⟩⌜i
}
-Deshape←IsArrayβ—Ά{βŸ¨π•©βŸ©}β€Ώβ₯Š
-
Β¨ ↩ {(π”½βŒœ)⊘(𝔽_eachd)β—‹ToArray}
match←{(0βŠ‘π•¨)β—Ά(1βŠ‘π•¨)‿𝕩}´⟨
@@ -165,6 +163,7 @@ SelSub←{
}𝕩
}
+Deshape←IsArrayβ—Ά{βŸ¨π•©βŸ©}β€Ώβ₯Š
Reshape←{
! 1β‰₯=𝕨
𝕨↩Deshape 𝕨
@@ -175,7 +174,7 @@ Reshape←{
𝕩(0<n)β—ΆβŸ¨Type⊸(⊣⌜)β‹„β₯ŠβŠΈ{βŠ‘βŸœπ•¨βŒœn|𝕩}βŸ©β†•l
}⍟(lβ‰ n)𝕩
}⟜ToArray
-β₯Š ↩ Deshape ⊘ Reshape
+β₯Š ↩ Deshape ⊘ β₯Š
Range←{
I←{!Nat𝕩⋄↕𝕩}
@@ -194,7 +193,7 @@ _depthOp_←{
neg←0>n←𝕨𝔾_ranks𝕩 β‹„ F←𝔽
_d←{
R←(𝕗+neg)_d
- 𝕨(Γ—βŸœ2⊸+Β΄2β₯Š(negβˆ§π•—β‰₯0)∨(0βŒˆπ•—)β‰₯Pair○≑)β—Ά(⟨RΒ¨β‹„RβŸœπ•©βŒœβˆ˜βŠ£β‹„(𝕨R⊒)βŒœβˆ˜βŠ’β‹„F⟩)𝕩
+ 𝕨(Γ—βŸœ2⊸+Β΄2 Reshape (negβˆ§π•—β‰₯0)∨(0βŒˆπ•—)β‰₯Pair○≑)β—Ά(⟨RΒ¨β‹„RβŸœπ•©βŒœβˆ˜βŠ£β‹„(𝕨R⊒)βŒœβˆ˜βŠ’β‹„F⟩)𝕩
}
𝕨 n _d 𝕩
}
@@ -247,16 +246,16 @@ JoinToβ†βˆ¨β—‹(1β‰ =)β—ΆβˆΎβ€Ώ{
Take←{
T←{
! Int 𝕨
- l←≠𝕩 β‹„ n←𝕨<0 β‹„ e←l⌊r←|𝕨 β‹„ sβ†βŸ¨r⟩
- i ← 𝕩{sβˆΎβ†©c←1 Cell 𝕨⋄𝕩(Γ—+βŒœβ†•βˆ˜βŠ’)Γ—Β΄c}⍟(1β‰ =𝕩) (l-e)+⍟n ↕e
- s β₯Š 𝕩{(β₯Šπ•©)nβ—ΆβŸ¨βˆΎ,∾˜⟩(r-e)β₯ŠType𝕗}⍟(l<r) βŠ‘βŸœ(β₯Šπ•©)⌜i
+ l←≠𝕩 β‹„ n←𝕨<0 β‹„ e←l⌊r←|𝕨 β‹„ sβ†βŸ¨r⟩ β‹„ m←1
+ i ← 𝕩{sβˆΎβ†©c←1 Cell 𝕨⋄𝕩(Γ—+βŒœβ†•βˆ˜βŠ’)m↩×´c}⍟(1β‰ =𝕩) (l-e)+⍟n ↕e
+ sβ₯Šπ•©{(β₯Šπ•©)nβ—ΆβŸ¨βˆΎ,∾˜⟩(0βŠ‘β₯ŠType𝕗)βŒœβ†•mΓ—r-e}⍟(l<r) βŠ‘βŸœ(β₯Šπ•©)⌜i
}
- 𝕨 T _onAxes_ 0 (⟨1⟩β₯ŠΛœ0βŒˆπ•¨-β—‹β‰ βŠ’)βŠΈβˆΎβˆ˜β‰’βŠΈβ₯Šπ•©
+ 𝕨 T _onAxes_ 0 ((1βŒœβˆ˜β†•0βŒˆπ•¨-β—‹β‰ βŠ’)βŠΈβˆΎβˆ˜β‰’β₯Šβ₯Š) 𝕩
}
Prefixes ← {!1≀=𝕩 β‹„ TakeβŸœπ•©βŒœβ†•1+≠𝕩}
↑ ← Prefixes ⊘ Take
Drop←{
- s←(≠𝕨)(βŠ£β†‘βŠ’βˆΎΛœ1β₯ŠΛœ0⌈-βŸœβ‰ )≒𝕩
+ s←(≠𝕨)(βŠ£β†‘βŠ’βˆΎΛœΒ·1βŒœβˆ˜β†•0⌈-βŸœβ‰ )≒𝕩
((sΓ—Β―1⋆𝕨>0)+(-s)⌈sβŒŠπ•¨)↑𝕩
}
Suffixes ← {!1≀=𝕩 β‹„ DropβŸœπ•©βŒœβ†•1+≠𝕩}
@@ -276,13 +275,12 @@ Reverse ← {!1≀=𝕩 β‹„ (-β†•βŠΈΒ¬β‰ π•©)βŠπ•©}
Rotate ← {!Int𝕨 β‹„ l←≠𝕩⋄(l|𝕨+↕l)βŠπ•©} _onAxes_ 0
Rep ← Indices⊸⊏
-Replicate ← {0<=𝕨}β—Ά(β₯ŠΛœβŸœβ‰ Rep⊒)β€Ώ{!𝕨=○≠𝕩⋄𝕨Rep𝕩} _onAxes_ (1-0=β‰ )
+Replicate ← {0<=𝕨}β—Ά{π•¨βŒœβŠΈRep𝕩}β€Ώ{!𝕨=○≠𝕩⋄𝕨Rep𝕩} _onAxes_ (1-0=β‰ )
↕ ↩ Range ⊘ Windows
⌽ ← Reverse ⊘ Rotate
/ ← Indices ⊘ Replicate
-
Join←(1β‰ =)β—ΆβŸ¨βˆ¨Β΄1β‰ =⌜,1βŸ©β—Ά{
# List of lists
i←j←¯1β‹„eβ†βŸ¨βŸ©β‹„a←𝕩
@@ -434,12 +432,13 @@ _repeat_←{
n←𝕨𝔾𝕩
l←u←0
{!Int𝕩⋄l↩lβŒŠπ•©β‹„u↩uβŒˆπ•©}βš‡0 n
- a←𝕩⋄_p←{π”½βˆ˜βŠ£`(1+𝕩)β₯Š<a}
+ a←𝕩⋄_p←{π”½βˆ˜βŠ£`⟨aβŸ©βˆΎβ†•0+𝕩}
pos←(𝕨𝔽 ⊒)_p u
neg←(π•¨π”½βΌβŠ’)_p-l
(|βŠ‘<⟜0βŠ‘posβ€Ώneg˜)βš‡0 n
}
⍟ ↩ _repeat_
+β₯Š ↩ Deshape ⊘ Reshape
⌜ ↩ {π”½βŒœβ—‹ToArray}
⌾ ← _under_