fix ⟨⟩⍷1‿0⥊0

This commit is contained in:
dzaima 2024-04-03 02:10:26 +03:00
parent af0a40c732
commit d77018f269
2 changed files with 37 additions and 7 deletions

View File

@ -281,15 +281,40 @@ B find_c2(B t, B w, B x) {
if (IA(x)==0) { if (IA(x)==0) {
emptyres:; emptyres:;
Arr* ra = allZeroes(0); usz ia = 0;
usz* rsh = arr_shAlloc(ra, xr); ShArr* sh = NULL;
if (rsh) { if (xr > 1) {
sh = m_shArr(xr);
usz* rsh = sh->a;
usz* wsh=SH(w); usz* xsh=SH(x); usz* wsh=SH(w); usz* xsh=SH(x);
shcpy(rsh, xsh, xr-wr);
xsh+=xr-wr; rsh+=xr-wr; ia = 1;
PLAINLOOP for (ux i = 0; i < wr; i++) rsh[i] = wsh[i]>xsh[i]? 0 : xsh[i]-wsh[i]+1; PLAINLOOP for (ux i = 0; i < xr-wr; i++) {
usz c = xsh[i];
rsh[i] = c;
if (mulOn(ia, c)) {
shapeBig:;
mm_free((Value*)sh);
thrOOM();
}
shcpy(rsh, xsh, xr-wr);
}
xsh+= xr-wr;
rsh+= xr-wr;
PLAINLOOP for (ux i = 0; i < wr; i++) {
usz c;
if (wsh[i] > xsh[i]) {
c = 0;
ia = 0;
} else {
c = xsh[i]+1u-wsh[i];
if (c==0 || mulOn(ia, c)) goto shapeBig;
}
rsh[i] = c;
}
} }
r = taga(ra); r = taga(arr_shSetUO(allOnes(ia), xr, sh));
goto dec_ret; goto dec_ret;
} }

View File

@ -289,6 +289,11 @@ w←1‿1⥊1 ⋄ x←2⥊1 ⋄ w‿x <¨↩ ⋄ {! (∾⟨•Repr𝕩,": Expe
%USE eqvar 01 _eqvar 0 %% %USE eqvar 01 _eqvar 0 %%
%USE eqvar (0) _eqvar 10 %% 111 %USE eqvar (0) _eqvar 10 %% 111
%USE eqvar "ab" _eqvar 05"ab" %% 040 %USE eqvar "ab" _eqvar 05"ab" %% 040
(00)100 %% 111
10"" %% 111
(0000000)10000000 %% 11111111
(0000000)30003400 %% 31114511
!"Out of memory" % (0000000)1e9001e91e9000
'a'1 05 %% 040 'a'1 05 %% 040
"abc" 51'a' %% 500 "abc" 51'a' %% 500
(<"ab")<"aa", (<"ab")<"ab" %% <0,<1 (<"ab")<"aa", (<"ab")<"ab" %% <0,<1