aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-04-27 16:17:26 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-04-27 16:20:31 -0400
commit714431ccb919fd7d6d96360189cf2e2c015637aa (patch)
tree91948cae6de7096025487f52413ab6f911f4883c /src
parent90d9b355fe535268d585738f608518eab7026449 (diff)
Make default comparison result in _getCellCmp optional
Diffstat (limited to 'src')
-rw-r--r--src/r.bqn14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/r.bqn b/src/r.bqn
index a5e8bee1..0ad3bc1c 100644
--- a/src/r.bqn
+++ b/src/r.bqn
@@ -107,7 +107,7 @@ Cmp0 ← ≥-≤
Cmp1 ← (0<1×´≢∘⊢)◶⟨1, IsArray∘⊢◶(1-2×≤)‿{𝕨Cmp1𝕩}⟜(0⊑⥊)⟩
CmpLen ← {
e←𝕨-○(1×´0⊸<⌜)𝕩
- 𝕨(e=0)◶⟨0,e⟩‿{
+ 𝕨(e=0)◶⟨e,0⟩‿{
SM←Cmp0 Pair ≥⊑Pair
c‿r←𝕨SM○≠𝕩
l←𝕨{
@@ -116,17 +116,17 @@ CmpLen ← {
{k‿l←SM´𝕩⋄c↩k⋄m×↩l}∘(<⊑⌜𝕨‿𝕩˙)⍟(r⊸>)i
m
}○{(𝕩⊑˜(¯1+≠𝕩)⊸-)⌜↕r}𝕩
- ⟨l,c⟩
+ ⟨c,l⟩
}𝕩
}
_getCellCmp ← {
- Ci←𝔽⋄l←𝕨⋄c←𝕩
+ Ci←𝔽⋄c←𝕨⊣0⋄l←𝕩
Cc←{
a←𝕨⋄b←𝕩
S←(l⊸=)◶{S∘(1+𝕩)⍟(0⊸=)a Ci○(𝕩⊸+)b}‿c
S 0
}
- (1=l)⊑Cc‿(𝕩⍟(0⊸=)𝔽)
+ (𝕨 ⊢⊘{𝕨⍟(0⊸=)𝕏} ci˙)⍟(1=l) cc
}
Cmp ← +○IsArray◶⟨
Cmp0
@@ -147,7 +147,7 @@ _grade_←{
bl←bu←0⋄r←1-{((bu↩⌈´𝕩)-bl↩⌊´𝕩)≤2×l}⟜𝕩⍟⊢((m=1)×32<l)◶0‿(1×´Int⌜)d
0 Fill r◶⟨GroupLen⊸GroupOrd (𝕘⊑⟨-⟜bl,bu⊸-⟩)⌜ ⋄ 𝔽{𝕩⋄
# Merge sort
- GT←(m 𝔽○(⊑⟜d) _getCellCmp 0)>0˜
+ GT←(𝔽○(⊑⟜d) _getCellCmp m)>0˜
B←l⊸≤◶⊢‿l
(↕l){
i←-d←𝕨 ⋄ j←ei←ej←0
@@ -172,7 +172,7 @@ _bins←{
"⍋ or ⍒: Rank of 𝕩 must be at least cell rank of 𝕨" ! c≤=𝕩
𝕩↩ToArray 𝕩
lw←1×´sw←1 Cell 𝕨
- cw←lw 𝔽○(⊑⟜(⥊𝕨)) _getCellCmp 0
+ cw←𝔽○(⊑⟜(⥊𝕨)) _getCellCmp lw
"⍋ or ⍒: 𝕨 must be sorted" ! 0⊸<◶⟨1,1×´·(cw≤0˙)⟜(lw⊸+)∘(lw⊸×)⌜↕∘-⟜1⟩≠𝕨
cx←c-˜=𝕩
sx←cx Cell 𝕩 ⋄ lc←sw CmpLen sx
@@ -195,7 +195,7 @@ _search←{ # 0 for ∊˜, 1 for ⊐
n←≠𝕨 ⋄ k←1×´s←1 Cell 𝕨 ⋄ cx←c-˜=𝕩
lx←1×´sh←cx↑≢𝕩
sh ⥊ 𝕨 (0<n)◶⟨0,s MatchS cx⊸Cell⟩◶{𝕩⋄(ind×n)⌜↕lx}‿{
- cc ← k (⊑⟜(⥊𝕨))⊸(1-Match)⟜(⊑⟜(⥊𝕩)) _getCellCmp 0
+ cc ← (⊑⟜(⥊𝕨))⊸(1-Match)⟜(⊑⟜(⥊𝕩)) _getCellCmp k
𝕨 ×○(8<≠∘⥊)◶{𝕩
i‿j←(k⊸×⌜↕)⌜n‿lx ⋄ {Red CC⟜𝕩⌜i}⌜j
}‿{