diff --git a/src/builtins/grade.h b/src/builtins/grade.h index 11c8de30..8cfbd0ba 100644 --- a/src/builtins/grade.h +++ b/src/builtins/grade.h @@ -317,7 +317,7 @@ B GRADE_CAT(c1)(B t, B x) { u64 range = max - (i64)min + 1; if (range/2 < ia) { // First try to invert it as a permutation - if (range==ia && sum==(u32)(i32)((i64)ia*(min+max)/2)) { + if (range == ia && sum == (u32)(ia * (min+(i64)max)/2)) { for (usz i = 0; i < ia; i++) rp[i]=ia; for (usz i = 0; i < ia; i++) { i32 v=xp[i]; GRADE_UD(rp[v-min],rp[max-v])=i; } bool done=1; for (usz i = 0; i < ia; i++) done &= rp[i]!=ia; diff --git a/test/cases/prims.bqn b/test/cases/prims.bqn index 8dc5ea57..701be30d 100644 --- a/test/cases/prims.bqn +++ b/test/cases/prims.bqn @@ -380,6 +380,9 @@ a←↕2 ⋄ ! "e" ≡ (↕10){b←a‿a‿a‿a‿a‿a‿a‿a‿a‿a ⋄ {! ∧´(𝕨⊐𝕩) = (≠𝕨) × 𝕨≢○⊑𝕩}⌜˜ 3‿100 ⥊⌜ "a⍉𝕩"∾1‿10‿1e4‿1e9‿1e12∾⟨"a",{⇐}⟩ {! ∧´(𝕨⊒𝕩) = ↕∘≠⊸⌊⍟(𝕨≡○⊑𝕩) 𝕩 ⥊○≠ 𝕨}⌜˜ 3‿100 ⥊⌜ "a⍉𝕩"∾1‿10‿1e4‿1e9‿1e12∾⟨"a",{⇐}⟩ +# ⍋𝕩 +⟨100, 30000, 2e9, ¯100, ¯30000, ¯2e9, @+200, @+60000, @+1111111⟩ {! a ≡ ⍋ •internal.Keep ⍋ 𝕨 + a ← •rand.Deal 𝕩}⌜ 3‿10‿100‿1000 + # 𝕨⍋𝕩 !"⍋: 𝕨 must be sorted" % a←-¨ ∧⋈¨ ↕10 ⋄ a⍋⋈¨↕10 ⍷∘(⥊¨)⊸({! (𝕨⍋𝕩) ≡ (≢𝕩)⥊ (≠𝕨)×0≥𝕨 •Cmp○⊑ 𝕩}⌜) ⟨3, <3, 10⥊3, 'a', <'a', 10⥊'a'⟩