aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-03 16:23:51 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-03 21:53:04 -0400
commite72c3605b252322a145c928b65ff46bba2ccd9d1 (patch)
treebbb47748632079e772f2a66dd63ad3547455b66c
parent7025dfed3ef57840286d81a19cac517bcd62f321 (diff)
Faster list-of-lists join
-rw-r--r--impl.bqn7
1 files changed, 6 insertions, 1 deletions
diff --git a/impl.bqn b/impl.bqn
index 79c64fa3..6efef2c6 100644
--- a/impl.bqn
+++ b/impl.bqn
@@ -256,7 +256,12 @@ Replicate ← {0<=𝕨}◶(⥊˜⟜≠Rep⊢)‿{!𝕨=○≠𝕩⋄𝕨Rep𝕩}
#⌜
# LAYER 6: Everything else
-Join←{
+Join←(1≠=)◶⟨∨´1≠=¨,1⟩◶{
+ # List of lists
+ i←j←¯1⋄e←⟨⟩⋄a←𝕩
+ {{e↩a⊑˜i↩𝕩⋄j↩¯1}⍟(i⊸≠)𝕩⋄(j↩j+1)⊑e}¨/≠¨𝕩
+}‿{
+ # Multidimensional
C←(<⟨⟩)⥊⊸∾⌜´⊢ # Cartesian array product
! IsArray 𝕩
s←≢¨𝕩