sursumCorda

882 Reputation

13 Badges

1 years, 91 days

MaplePrimes Activity


These are questions asked by sursumCorda

In short, I'd like to obtain n largest/smallest elements in a huge list of (probably non-numeric) data. Of cource I can sort it and then extract the desired part, yet isn't there a dedicated procedure that do a partial sort of the input data in Maple?

Edit. In a MatLab weblog, the blogger gave: 

So I believe that a dedicated one is not useless. But what is the Maple equivalent to MatLab's maxk, mink, and topkrows?

The sequence A161786 consists of “primes with at least one digit appearing exactly four times in the decimal expansion”. Below is the Maple program given in that OEIS page:

The code above picks out primes having exactly four identical digits (determined by ) from the first 10,000 prime numbers. However, it's easy to check that this program is rather slow (It takes about 2.6s to execute it!). 
Actually, I would like to select such primes from pn, pn+1, pn+2, …, pn+m-1 (typically, n=1,000,000 and m=1,000,000), where pk denotes the k-th prime number, yet the original program failes to do so in twenty minutes. Part of the reason is that for long sequences, the efficiency can be critical. Therefore I make a slight modification to the original code: 

A161786__0 := proc(m::nonnegint, n::posint := 1, ` $`)::'Vector'(prime):
	#(*
	    kernelopts(opaquemodules = false):
	# *)
	local p := ifelse(n = 1, 1, ithprime(n - 1)), vec := Vector('datatype' = prime);
	to m do
		if ormap(`=`, MultiSet(`convert/base`:-MakeSplit(length((p := nextprime(p))), 1, 10)(p)):-hash, 4) then
			vec ,= p
		fi
	od;
	vec
end:

Nevertheless, this version is still inefficient: 

time[real](A161786__0(10**6, 10**6));
 = 
                            182.414

Another choice is converting each of integers into a string: 

A161786__1 := proc(m::nonnegint, n::posint := 1, ` $`)::'Vector'(prime):
	options no_options:
	local p := ifelse(n = 1, 1, ithprime(n - 1)), vec := DEQueue();
	to m do
		if member(4, rhs~({StringTools['CharacterFrequencies'](nprintf("%d", (p := nextprime(p))), 'digit')})) then
			vec ,= p
		fi
	od;
	Vector([vec[]], 'datatype' = prime)
end:

This time the elapsed time is reduced to nearly two minutes: 

time[real](A161786__1(10**6, 10**6));
 = 
                            118.409

But can this task be accomplished within (a quarter of) a minute in modern Maple? In other words, is there a way to make further improvement on the performance? (Note that the reference time is mesured using a adjusted version (i.e., ) of the Mma code provided in that OEIS page.) 

Since strings are not mutable objects in Maple, the package provides two procedures, StringTools:-OldStringBuffer and StringTools:-StringBuffer, which appear heavily correlated with Java's  and . 

The help page of StringBuffer claims that use of a is much more efficient than the naive approach: 

(*
`G` and `F` are taken from the link above.
*)
G := proc()
   description "extremely inefficient string concatenator";
   local   r;
   r := proc()
       if nargs = 0 then
           ""
       elif nargs = 1 then
           args[ 1 ]
       else
           cat( args[ 1 ], procname( args[ 2 .. -1 ] ) )
       end if
   end proc;
   r( args )
end proc:
# # This can be transformed into an O(1) algorithm by passing a string buffer to the recursive calls.
F := proc()
   description "efficient version of G";
   local    b, r;
   b := StringTools:-StringBuffer();
   r := proc()
       if nargs = 1 then
           b:-append( args[ 1 ] )
       else
           b:-append( args[ 1 ] );
           procname( args[ 2 .. -1 ] )
       end if
   end proc;
   r( args ):-value()
end proc:
s := 'StringTools:-Random(10, print)' $ 1e4:
NULL;
time(G(s));
                             5.375

time(F(s));
                             1.125

But why not use the built-in cat directly? 

time(cat(s));
                               0.

time(StringTools:-Join([s], ""));
                               0.

Clearly, this is even more efficient

Here is the last example in that link. 

FilterFile := proc( fname::string, filter )
   local   b, line;
   b := StringTools:-StringBuffer();
   do
       line := readline( fname );
       if line = 0 then break end if;
       b:-append( filter( line ) )
   end do;
   b:-value()
end proc: # verbatim 
filename__0 := FileTools:-JoinPath(["example", "odyssey.txt"], 'base' = 'datadir'):
filename__1 := URL:-Download("https://gutenberg.org/ebooks\
/2600.txt.utf-8", "War-and-Peace.txt"):

fclose(filename__0):
    time[real]((rawRes0 := FilterFile(filename__0, StringTools:-Unique)));
                             0.223

fclose(filename__1):
    time[real]((rawRes1 := FilterFile(filename__1, StringTools:-Unique)));
                             1.097

Nevertheless, 

close(filename__0):
use StringTools, FileTools:-Text in
	time[real]((newRes0 := String(Support~(fscanf(filename__0, Repeat("%[^\n]%*c", CountLines(filename__0))))[])))
end;
                             0.118

close(filename__1):
use StringTools, FileTools:-Text in
	time[real]((newRes1 := String(Support~(fscanf(filename__1, Repeat("%[^\n]%*c", CountLines(filename__1))))[])))
end;
                             0.580

evalb(newRes0 = rawRes0 and newRes1 = rawRes1);
                              true

As you can see, these experiments just tell an opposite story. Isn't the so-called "StringBuffer" obsolete today

Delay differential equations in Chebfun lists 15 examples "taken from the literature". Many of them can be (numerically) solved in Maple without difficulty, yet when I attempt to solve the  in the above link, Maple's internal solver `dsolve/numeric` just halts with an error. 

plots:-odeplot(dsolve({D(u)(t) + u(t)**2 + 2*u(1/2*t) = 1/2*exp(t), u(0) = u(1/3)}, type = numeric, range = 0 .. 1/3), size = ["default", "golden"]);
Error, (in dsolve/numeric) delay equations are not supported for bvp solvers

Even if I guess an initial (or final) value artificially, the solution is still less reliable (For instance, what is the approximate endpoint value? 0.26344 or 0.2668?): 

restart;
dde := D(u)(t) + u(t)**2 + u(t/2)*2 = exp(t)/2:
x__0 := 2668/10000:
sol0 := dsolve([dde, u(0) = x__0], type = numeric, 'delaymax' = 1/6, range = 0 .. 1/3):
plots['odeplot'](sol0, [[t, u(t)], [t, x__0]], 'size' = ["default", "golden"]);

x__1 := 26344/100000:
sol1 := dsolve([dde, u(1/3) = x__1], type = numeric, 'delaymax' = 1/6, range = 0 .. 1/3):
plots['odeplot'](sol1, [[t, u(t)], [t, x__1]], size = ["default", "golden"]);

Compare:  (Note that the reference numerical solution implies that its minimum should be no less than 0.258 (Is this incorrect?).).

And actually, the only known constraint is simply u(0)=u(⅓) (so neither value is known beforehand). Can Maple process this boundary condition automatically (that is, without the need for manual preprocessing and in absence of any other prior information)?
I have read the help page How to | Numeric Delay Differential Equations and Numerical Solution of Difficult ODE Boundary Value Problems, but it appears that those techniques are more or less ineffective here. So, how do I solve such a "first order nonlinear 'BVP' with pantograph delay" in Maple?

For instance, “[1, 2, 3]”, “[``([1, 2]), uneval([3])]”, and “[[1, 2], [3, 'NULL']]” are fully rectangular. “[1, 2, [3]]”, “[`[]`(1, 2), [3]]”, and “[[1, 2], [3, NULL]]” are considered nonrectangular, but if we temporarily freeze the "ragged" parts or regard them as a depth-1 container, the corresponding expressions will seem rectangular. `type(…, list(Non(list)))` and `type(…, listlist(Non(list)))` check these, but they do not work for general cases.
To be specific, the desired output should be something like

IsRectangular([[[l, 2], [3, 4]], [[5, 6], [7, 8]]]);
 = 
                            true, 3

IsRectangular([[[O, l, 2], [3, 4]], [[5, 6], [7, 8]]]);
 = 
                            false, 2

IsRectangular([[[[l], 2], [3, 4]], [[5, 6], [7, 8]]], 3);
 = 
                            true, 3

IsRectangular([[O, [l, 2], [3, 4]], [[5, 6], [7, 8]]], 2);
 = 
                            false, 1

The results above can be obtained by some observations. However, if the input has deeper levels, evaluating this will be a punishing work: 

test__1 := [[[[[[[[-288],[-287],[-286]],[[-285],[-284],[-283]],[[-282],[-281],[-280]],[[-279],[-278],[-277]]]],[[[[-276],[-275],[-274]],[[-273],[-272],[-271]],[[-270],[-269],[-268]],[[-267],[-266],[-265]]]],[[[[-264],[-263],[-262]],[[-261],[-260],[-259]],[[-258],[-257],[-256]],[[-255],[-254],[-253]]]]],[[[[[-252],[-251],[-250]],[[-249],[-248],[-247]],[[-246],[-245],[-244]],[[-243],[-242],[-241]]]],[[[[-240],[-239],[-238]],[[-237],[-236],[-235]],[[-234],[-233],[-232]],[[-231],[-230],[-229]]]],[[[[-228],[-227],[-226]],[[-225],[-224],[-223]],[[-222],[-221],[-220]],[[-219],[-218],[-217]]]]]],[[[[[[-216],[-215],[-214]],[[-213],[-212],[-211]],[[-210],[-209],[-208]],[[-207],[-206],[-205]]]],[[[[-204],[-203],[-202]],[[-201],[-200],[-199]],[[-198],[-197],[-196]],[[-195],[-194],[-193]]]],[[[[-192],[-191],[-190]],[[-189],[-188],[-187]],[[-186],[-185],[-184]],[[-183],[-182],[-181]]]]],[[[[[-180],[-179],[-178]],[[-177],[-176],[-175]],[[-174],[-173],[-172]],[[-171],[-170],[-169]]]],[[[[-168],[-167],[-166]],[[-165],[-164],[-163]],[[-162],[-161],[-160]],[[-159],[-158],[-157]]]],[[[[-156],[-155],[-154]],[[-153],[-152],[-151]],[[-150],[-149],[-148]],[[-147],[-146],[-145]]]]]],[[[[[[-144],[-143],[-142]],[[-141],[-140],[-139]],[[-138],[-137],[-136]],[[-135],[-134],[-133]]]],[[[[-132],[-131],[-130]],[[-129],[-128],[-127]],[[-126],[-125],[-124]],[[-123],[-122],[-121]]]],[[[[-120],[-119],[-118]],[[-117],[-116],[-115]],[[-114],[-113],[-112]],[[-111],[-110],[-109]]]]],[[[[[-108],[-107],[-106]],[[-105],[-104],[-103]],[[-102],[-101],[-100]],[[-99],[-98],[-97]]]],[[[[-96],[-95],[-94]],[[-93],[-92],[-91]],[[-90],[-89],[-88]],[[-87],[-86],[-85]]]],[[[[-84],[-83],[-82]],[[-81],[-80],[-79]],[[-78],[-77],[-76]],[[-75],[-74],[-73]]]]]],[[[[[[-72],[-71],[-70]],[[-69],[-68],[-67]],[[-66],[-65],[-64]],[[-63],[-62],[-61]]]],[[[[-60],[-59],[-58]],[[-57],[-56],[-55]],[[-54],[-53],[-52]],[[-51],[-50],[-49]]]],[[[[-48],[-47],[-46]],[[-45],[-44],[-43]],[[-42],[-41],[-40]],[[-39],[-38],[-37]]]]],[[[[[-36],[-35],[-34]],[[-33],[-32],[-31]],[[-30],[-29],[-28]],[[-27],[-26],[-25]]]],[[[[-24],[-23],[-22]],[[-21],[-20],[-19]],[[-18],[-17],[-16]],[[-15],[-14],[-13]]]],[[[[-12],[-11],[-10]],[[-9],[-8],[-7]],[[-6],[-5],[-4]],[[-3],[-2],[-1],[-0]]]]]]],[[[[[[[0],[1],[2]],[[3],[4],[5]],[[6],[7],[8]],[[9],[10],[11]]]],[[[[12],[13],[14]],[[15],[16],[17]],[[18],[19],[20]],[[21],[22],[23]]]],[[[[24],[25],[26]],[[27],[28],[29]],[[30],[31],[32]],[[33],[34],[35]]]]],[[[[[36],[37],[38]],[[39],[40],[41]],[[42],[43],[44]],[[45],[46],[47]]]],[[[[48],[49],[50]],[[51],[52],[53]],[[54],[55],[56]],[[57],[58],[59]]]],[[[[60],[61],[62]],[[63],[64],[65]],[[66],[67],[68]],[[69],[70],[71]]]]]],[[[[[[72],[73],[74]],[[75],[76],[77]],[[78],[79],[80]],[[81],[82],[83]]]],[[[[84],[85],[86]],[[87],[88],[89]],[[90],[91],[92]],[[93],[94],[95]]]],[[[[96],[97],[98]],[[99],[100],[101]],[[102],[103],[104]],[[105],[106],[107]]]]],[[[[[108],[109],[110]],[[111],[112],[113]],[[114],[115],[116]],[[117],[118],[119]]]],[[[[120],[121],[122]],[[123],[124],[125]],[[126],[127],[128]],[[129],[130],[131]]]],[[[[132],[133],[134]],[[135],[136],[137]],[[138],[139],[140]],[[141],[142],[143]]]]]],[[[[[[144],[145],[146]],[[147],[148],[149]],[[150],[151],[152]],[[153],[154],[155]]]],[[[[156],[157],[158]],[[159],[160],[161]],[[162],[163],[164]],[[165],[166],[167]]]],[[[[168],[169],[170]],[[171],[172],[173]],[[174],[175],[176]],[[177],[178],[179]]]]],[[[[[180],[181],[182]],[[183],[184],[185]],[[186],[187],[188]],[[189],[190],[191]]]],[[[[192],[193],[194]],[[195],[196],[197]],[[198],[199],[200]],[[201],[202],[203]]]],[[[[204],[205],[206]],[[207],[208],[209]],[[210],[211],[212]],[[213],[214],[215]]]]]],[[[[[[216],[217],[218]],[[219],[220],[221]],[[222],[223],[224]],[[225],[226],[227]]]],[[[[228],[229],[230]],[[231],[232],[233]],[[234],[235],[236]],[[237],[238],[239]]]],[[[[240],[241],[242]],[[243],[244],[245]],[[246],[247],[248]],[[249],[250],[251]]]]],[[[[[252],[253],[254]],[[255],[256],[257]],[[258],[259],[260]],[[261],[262],[263]]]],[[[[264],[265],[266]],[[267],[268],[269]],[[270],[271],[272]],[[273],[274],[275]]]],[[[[276],[277],[278]],[[279],[280],[281]],[[282],[283],[284]],[[285],[286],[287]]]]]]]]:
test__2 := [[[[[[[[-288],[-287],[-286]],[[-285],[-284],[-283]],[[-282],[-281],[-280]],[[-279],[-278],[-277]]]],[[[[-276],[-275],[-274]],[[-273],[-272],[-271]],[[-270],[-269],[-268]],[[-267],[-266],[-265]]]],[[[[-264],[-263],[-262]],[[-261],[-260],[-259]],[[-258],[-257],[-256]],[[-255],[-254],[-253]]]]],[[[[[-252],[-251],[-250]],[[-249],[-248],[-247]],[[-246],[-245],[-244]],[[-243],[-242],[-241]]]],[[[[-240],[-239],[-238]],[[-237],[-236],[-235]],[[-234],[-233],[-232]],[[-231],[-230],[-229]]]],[[[[-228],[-227],[-226]],[[-225],[-224],[-223]],[[-222],[-221],[-220]],[[-219],[-218],[-217]]]]]],[[[[[[-216],[-215],[-214]],[[-213],[-212],[-211]],[[-210],[-209],[-208]],[[-207],[-206],[-205]]]],[[[[-204],[-203],[-202]],[[-201],[-200],[-199]],[[-198],[-197],[-196]],[[-195],[-194],[-193]]]],[[[[-192],[-191],[-190]],[[-189],[-188],[-187]],[[-186],[-185],[-184]],[[-183],[-182],[-181]]]]],[[[[[-180],[-179],[-178]],[[-177],[-176],[-175]],[[-174],[-173],[-172]],[[-171],[-170],[-169]]]],[[[[-168],[-167],[-166]],[[-165],[-164],[-163]],[[-162],[-161],[-160]],[[-159],[-158],[-157]]]],[[[[-156],[-155],[-154]],[[-153],[-152],[-151]],[[-150],[-149],[-148]],[[-147],[-146],[-145]]]]]],[[[[[[-144],[-143],[-142]],[[-141],[-140],[-139]],[[-138],[-137],[-136]],[[-135],[-134],[-133]]]],[[[[-132],[-131],[-130]],[[-129],[-128],[-127]],[[-126],[-125],[-124]],[[-123],[-122],[-121]]]],[[[[-120],[-119],[-118]],[[-117],[-116],[-115]],[[-114],[-113],[-112]],[[-111],[-110],[-109]]]]],[[[[[-108],[-107],[-106]],[[-105],[-104],[-103]],[[-102],[-101],[-100]],[[-99],[-98],[-97]]]],[[[[-96],[-95],[-94]],[[-93],[-92],[-91]],[[-90],[-89],[-88]],[[-87],[-86],[-85]]]],[[[[-84],[-83],[-82]],[[-81],[-80],[-79]],[[-78],[-77],[-76]],[[-75],[-74],[-73]]]]]],[[[[[[-72],[-71],[-70]],[[-69],[-68],[-67]],[[-66],[-65],[-64]],[[-63],[-62],[-61]]]],[[[[-60],[-59],[-58]],[[-57],[-56],[-55]],[[-54],[-53],[-52]],[[-51],[-50],[-49]]]],[[[[-48],[-47],[-46]],[[-45],[-44],[-43]],[[-42],[-41],[-40]],[[-39],[-38],[-37]]]]],[[[[[-36],[-35],[-34]],[[-33],[-32],[-31]],[[-30],[-29],[-28]],[[-27],[-26],[-25]]]],[[[[-24],[-23],[-22]],[[-21],[-20],[-19]],[[-18],[-17],[-16]],[[-15],[-14],[-13]]]],[[[[-12],[-11],[-10]],[[-9],[-8],[-7]],[[-6],[-5],[-4]],[[-3],[-2,0],[-0]]]]]]],[[[[[[[-1],[1],[2]],[[3],[4],[5]],[[6],[7],[8]],[[9],[10],[11]]]],[[[[12],[13],[14]],[[15],[16],[17]],[[18],[19],[20]],[[21],[22],[23]]]],[[[[24],[25],[26]],[[27],[28],[29]],[[30],[31],[32]],[[33],[34],[35]]]]],[[[[[36],[37],[38]],[[39],[40],[41]],[[42],[43],[44]],[[45],[46],[47]]]],[[[[48],[49],[50]],[[51],[52],[53]],[[54],[55],[56]],[[57],[58],[59]]]],[[[[60],[61],[62]],[[63],[64],[65]],[[66],[67],[68]],[[69],[70],[71]]]]]],[[[[[[72],[73],[74]],[[75],[76],[77]],[[78],[79],[80]],[[81],[82],[83]]]],[[[[84],[85],[86]],[[87],[88],[89]],[[90],[91],[92]],[[93],[94],[95]]]],[[[[96],[97],[98]],[[99],[100],[101]],[[102],[103],[104]],[[105],[106],[107]]]]],[[[[[108],[109],[110]],[[111],[112],[113]],[[114],[115],[116]],[[117],[118],[119]]]],[[[[120],[121],[122]],[[123],[124],[125]],[[126],[127],[128]],[[129],[130],[131]]]],[[[[132],[133],[134]],[[135],[136],[137]],[[138],[139],[140]],[[141],[142],[143]]]]]],[[[[[[144],[145],[146]],[[147],[148],[149]],[[150],[151],[152]],[[153],[154],[155]]]],[[[[156],[157],[158]],[[159],[160],[161]],[[162],[163],[164]],[[165],[166],[167]]]],[[[[168],[169],[170]],[[171],[172],[173]],[[174],[175],[176]],[[177],[178],[179]]]]],[[[[[180],[181],[182]],[[183],[184],[185]],[[186],[187],[188]],[[189],[190],[191]]]],[[[[192],[193],[194]],[[195],[196],[197]],[[198],[199],[200]],[[201],[202],[203]]]],[[[[204],[205],[206]],[[207],[208],[209]],[[210],[211],[212]],[[213],[214],[215]]]]]],[[[[[[216],[217],[218]],[[219],[220],[221]],[[222],[223],[224]],[[225],[226],[227]]]],[[[[228],[229],[230]],[[231],[232],[233]],[[234],[235],[236]],[[237],[238],[239]]]],[[[[240],[241],[242]],[[243],[244],[245]],[[246],[247],[248]],[[249],[250],[251]]]]],[[[[[252],[253],[254]],[[255],[256],[257]],[[258],[259],[260]],[[261],[262],[263]]]],[[[[264],[265],[266]],[[267],[268],[269]],[[270],[271],[272]],[[273],[274],[275]]]],[[[[276],[277],[278]],[[279],[280],[281]],[[282],[283],[284]],[[285],[286],[287]]]]]]]]:
test__3 := [[[[[[[[-288],[-287],[-286]],[[-285],[-284],[-283]],[[-282],[-281],[-280]],[[-279],[-278],[-277]]]],[[[[-276],[-275],[-274]],[[-273],[-272],[-271]],[[-270],[-269],[-268]],[[-267],[-266],[-265]]]],[[[[-264],[-263],[-262]],[[-261],[-260],[-259]],[[-258],[-257],[-256]],[[-255],[-254],[-253]]]]],[[[[[-252],[-251],[-250]],[[-249],[-248],[-247]],[[-246],[-245],[-244]],[[-243],[-242],[-241]]]],[[[[-240],[-239],[-238]],[[-237],[-236],[-235]],[[-234],[-233],[-232]],[[-231],[-230],[-229]]]],[[[[-228],[-227],[-226]],[[-225],[-224],[-223]],[[-222],[-221],[-220]],[[-219],[-218],[-217]]]]]],[[[[[[-216],[-215],[-214]],[[-213],[-212],[-211]],[[-210],[-209],[-208]],[[-207],[-206],[-205]]]],[[[[-204],[-203],[-202]],[[-201],[-200],[-199]],[[-198],[-197],[-196]],[[-195],[-194],[-193]]]],[[[[-192],[-191],[-190]],[[-189],[-188],[-187]],[[-186],[-185],[-184]],[[-183],[-182],[-181]]]]],[[[[[-180],[-179],[-178]],[[-177],[-176],[-175]],[[-174],[-173],[-172]],[[-171],[-170],[-169]]]],[[[[-168],[-167],[-166]],[[-165],[-164],[-163]],[[-162],[-161],[-160]],[[-159],[-158],[-157]]]],[[[[-156],[-155],[-154]],[[-153],[-152],[-151]],[[-150],[-149],[-148]],[[-147],[-146],[-145]]]]]],[[[[[[-144],[-143],[-142]],[[-141],[-140],[-139]],[[-138],[-137],[-136]],[[-135],[-134],[-133]]]],[[[[-132],[-131],[-130]],[[-129],[-128],[-127]],[[-126],[-125],[-124]],[[-123],[-122],[-121]]]],[[[[-120],[-119],[-118]],[[-117],[-116],[-115]],[[-114],[-113],[-112]],[[-111],[-110],[-109]]]]],[[[[[-108],[-107],[-106]],[[-105],[-104],[-103]],[[-102],[-101],[-100]],[[-99],[-98],[-97]]]],[[[[-96],[-95],[-94]],[[-93],[-92],[-91]],[[-90],[-89],[-88]],[[-87],[-86],[-85]]]],[[[[-84],[-83],[-82]],[[-81],[-80],[-79]],[[-78],[-77],[-76]],[[-75],[-74],[-73]]]]]],[[[[[[-72],[-71],[-70]],[[-69],[-68],[-67]],[[-66],[-65],[-64]],[[-63],[-62],[-61]]]],[[[[-60],[-59],[-58]],[[-57],[-56],[-55]],[[-54],[-53],[-52]],[[-51],[-50],[-49]]]],[[[[-48],[-47],[-46]],[[-45],[-44],[-43]],[[-42],[-41],[-40]],[[-39],[-38],[-37]]]]],[[[[[-36],[-35],[-34]],[[-33],[-32],[-31]],[[-30],[-29],[-28]],[[-27],[-26],[-25]]]],[[[[-24],[-23],[-22]],[[-21],[-20],[-19]],[[-18],[-17],[-16]],[[-15],[-14],[-13]]]],[[[[-12],[-11],[-10]],[[-9],[-8],[-7]],[[-6],[-5],[-4]],[[-3],[-2,-0]]]]]]],[[[[[[-1],[[1],[2]],[[3],[4],[5]],[[6],[7],[8]],[[9],[10],[11]]]],[[[[12],[13],[14]],[[15],[16],[17]],[[18],[19],[20]],[[21],[22],[23]]]],[[[[24],[25],[26]],[[27],[28],[29]],[[30],[31],[32]],[[33],[34],[35]]]]],[[[[[36],[37],[38]],[[39],[40],[41]],[[42],[43],[44]],[[45],[46],[47]]]],[[[[48],[49],[50]],[[51],[52],[53]],[[54],[55],[56]],[[57],[58],[59]]]],[[[[60],[61],[62]],[[63],[64],[65]],[[66],[67],[68]],[[69],[70],[71]]]]]],[[[[[[72],[73],[74]],[[75],[76],[77]],[[78],[79],[80]],[[81],[82],[83]]]],[[[[84],[85],[86]],[[87],[88],[89]],[[90],[91],[92]],[[93],[94],[95]]]],[[[[96],[97],[98]],[[99],[100],[101]],[[102],[103],[104]],[[105],[106],[107]]]]],[[[[[108],[109],[110]],[[111],[112],[113]],[[114],[115],[116]],[[117],[118],[119]]]],[[[[120],[121],[122]],[[123],[124],[125]],[[126],[127],[128]],[[129],[130],[131]]]],[[[[132],[133],[134]],[[135],[136],[137]],[[138],[139],[140]],[[141],[142],[143]]]]]],[[[[[[144],[145],[146]],[[147],[148],[149]],[[150],[151],[152]],[[153],[154],[155]]]],[[[[156],[157],[158]],[[159],[160],[161]],[[162],[163],[164]],[[165],[166],[167]]]],[[[[168],[169],[170]],[[171],[172],[173]],[[174],[175],[176]],[[177],[178],[179]]]]],[[[[[180],[181],[182]],[[183],[184],[185]],[[186],[187],[188]],[[189],[190],[191]]]],[[[[192],[193],[194]],[[195],[196],[197]],[[198],[199],[200]],[[201],[202],[203]]]],[[[[204],[205],[206]],[[207],[208],[209]],[[210],[211],[212]],[[213],[214],[215]]]]]],[[[[[[216],[217],[218]],[[219],[220],[221]],[[222],[223],[224]],[[225],[226],[227]]]],[[[[228],[229],[230]],[[231],[232],[233]],[[234],[235],[236]],[[237],[238],[239]]]],[[[[240],[241],[242]],[[243],[244],[245]],[[246],[247],[248]],[[249],[250],[251]]]]],[[[[[252],[253],[254]],[[255],[256],[257]],[[258],[259],[260]],[[261],[262],[263]]]],[[[[264],[265],[266]],[[267],[268],[269]],[[270],[271],[272]],[[273],[274],[275]]]],[[[[276],[277],[278]],[[279],[280],[281]],[[282],[283],[284]],[[285],[286],[287]]]]]]]]:

Is there a generalized test procedure (e.g., ListTools:-IsRectangular) that effectively works for any nested list of an arbitrary nesting level? 

3 4 5 6 7 8 9 Last Page 5 of 18