aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-07-26 14:32:06 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-07-26 14:33:55 -0400
commit374082a7b7f265dfa04c8aeadc0f3cd01cba5b07 (patch)
tree6d2c98f8da232f8e2d4a5f6ef57767d290978e03
parentd4acf8e53d6a2c2d3c95a317d25d4c82e440cdd5 (diff)
Use a binary search for Bins
-rwxr-xr-xdzref_full14
1 files changed, 11 insertions, 3 deletions
diff --git a/dzref_full b/dzref_full
index a909861c..f85bbed6 100755
--- a/dzref_full
+++ b/dzref_full
@@ -372,12 +372,20 @@ _bins←{
c←1-˜=𝕨
! 0≤c
! c≤=𝕩
- lw←×´sw←1↓≢𝕨
+ lw←×´sw←1 Cell 𝕨
cw←lw 𝔽○(⊑⟜(⥊𝕨)) _getCellCmp 0
! 0⊸<◶⟨1,∧´0≤˜·cw¨⟜(lw⊸+)lw×↕∘-⟜1⟩≠𝕨
- sx←c-⊸↑≢𝕩 ⋄ lc←sw 0 _cmpLen sx
+ cx←c-˜=𝕩
+ sx←cx Cell 𝕩 ⋄ lc←sw 0 _cmpLen sx
cc ← (⊑⟜(⥊𝕨))⊸𝔽⟜(⊑⟜(⥊𝕩)) _getCellCmp´ lc
- ((×´sw)×↕≠𝕨) (0<≠𝕨)◶⟨0¨∘⊢,+˝Cc⌜≤0˜⟩ (×´sx)×(⊢⥊·↕×´)c-⊸↓≢𝕩
+ n←≠𝕨
+ B←(×´sw)⊸×⊸Cc≤0˜
+ BS ← (0<n)◶0‿{
+ Bx←B⟜𝕩
+ R←{𝕨{a←Bx m←𝕩+h←⌊𝕨÷2⋄(h+a×2|𝕨)R a⊑𝕩‿m}⍟(>⟜1)𝕩}
+ 1+(n+1)R ¯1
+ }
+ BS¨ (×´sx) × ⥊⟜(↕×´)⊑⟜(≢𝕩)¨↕cx
}
OccurrenceCount ← ⊐˜(⊢-⊏)⍋∘⍋