Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Answer: How cand I find each dimension x,y,z of a 3D arrays

( #267115=categorized answer: print w/ replies, xml ) Need Help??

Q&A > arrays > How cand I find each dimension x,y,z of a 3D arrays contributed by DrHyde

In a perl array of arrays, just like in C, the data structure does not have to be rectangular (or cuboidal, or ...). For example, you can have an array like so:
@foo = ( [0, 1, 2, 3, 4, 5], [0, 1, 2], [0, [ 0, 1, 2, 3 ]] );
There, @foo contains three references to arrays, all of which are of different lengths. One of them contains a reference to another array as well as an ordinary scalar. The following code will tell you the largest number of elements in each dimension. Dimensions are numbered starting at zero (I assume $[ has not been altered):
my @foo = ( [0, 1, 2, 3, 4, 5], [0, 1, 2], [0, [ 0, 1, 2, 3 ]] ); my @maxlength = (); figger_out_depth(0, @foo); print "max dimensions:\n"; print " $_: $maxlength[$_]\n" foreach (0..$#maxlength); sub figger_out_depth { my $depth = shift; $maxlength[$depth] = 0 unless(defined($maxlength[$depth])); foreach my $element (@_) { figger_out_depth($depth + 1, @{$element}) if(ref($element) eq +'ARRAY'); } $maxlength[$depth] = $#_ + 1 if($#_ >= '0'.$maxlength[$depth]); }

Comment on Answer: How cand I find each dimension x,y,z of a 3D arrays
Select or Download Code
Log In?
Username:
Password:

What's my password?
Create A New User
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (5)
As of 2014-08-31 07:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (294 votes), past polls