diff --git a/src/builtins/search.c b/src/builtins/search.c index 49221225..e7979509 100644 --- a/src/builtins/search.c +++ b/src/builtins/search.c @@ -237,8 +237,10 @@ static NOINLINE usz indexOfOne(B l, B e) { we = xe = el_i16; \ goto chrEls; \ } \ - we-= el_c8-el_i8; \ - xe-= el_c8-el_i8; goto chrEls; \ + if (elChr(xe)) { \ + we-= el_c8-el_i8; \ + xe-= el_c8-el_i8; goto chrEls; \ + } \ } \ } else if (!elNum(xe)) { \ if (elChr(xe)) goto none_found; \ diff --git a/test/cases/prims.bqn b/test/cases/prims.bqn index d1349bdf..ecaa9d25 100644 --- a/test/cases/prims.bqn +++ b/test/cases/prims.bqn @@ -323,6 +323,11 @@ w←1‿1⥊1 ⋄ x←2⥊1 ⋄ w‿x <¨↩ ⋄ {! (∾⟨•Repr𝕩,": Expe # 𝕨⊒𝕩 1‿2‿2‿3‿3‿2‿2‿1⊒1‿8‿5‿5‿6‿2‿5‿3‿1‿5‿1‿2‿4‿3‿4‿3‿1‿5‿2‿3‿4‿1‿5‿2 %% 0‿8‿8‿8‿8‿1‿8‿3‿7‿8‿8‿2‿8‿4‿8‿8‿8‿8‿5‿8‿8‿8‿8‿6 +# 𝕨∊𝕩, 𝕨⊐𝕩, 𝕨⊒𝕩 +{! ∧´(𝕨∊𝕩) = 𝕨≡○⊑𝕩}⌜˜ 3‿100 ⥊⌜ "a⍉𝕩"∾1‿10‿1e4‿1e9‿1e12∾⟨"a",{⇐}⟩ +{! ∧´(𝕨⊐𝕩) = (≠𝕨) × 𝕨≢○⊑𝕩}⌜˜ 3‿100 ⥊⌜ "a⍉𝕩"∾1‿10‿1e4‿1e9‿1e12∾⟨"a",{⇐}⟩ +{! ∧´(𝕨⊒𝕩) = ↕∘≠⊸⌊⍟(𝕨≡○⊑𝕩) 𝕩 ⥊○≠ 𝕨}⌜˜ 3‿100 ⥊⌜ "a⍉𝕩"∾1‿10‿1e4‿1e9‿1e12∾⟨"a",{⇐}⟩ + # 𝕨⍋𝕩 !"⍋: 𝕨 must be sorted" % a←-¨ ∧⋈¨ ↕10 ⋄ a⍋⋈¨↕10