Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??

Hi Midget

as noted above, I have suggested yesterday four nested foreach loops in my answer to your cross post on the DevShed forum:

foreach my $s1 (@set1) { foreach my $s2 (@set2) { foreach my $s3 (@sizes) { foreach my $s4 (@colors) { print "$s1$s2$s3$s4\n"; } } } }

And I believe it is probably the best solution: clean, easy to read, easy to understand and efficient.

For the fun of it, however, let me suggest a kind of "Schwartzian" solution, which could also be called a "Lisp written in Perl" solution (or Scheme, or Haskell, or whatever functional language written in Perl):

my @sku = qw/SKU1 SKU2 SKU3/; my @tslh = qw/t s l h/; my @colors = qw/BLU GRN WHT BLK /; my @sizes = qw / S M L XL 2X /; print map { $col = $_; map { $siz = $_; map {$a1 =$_; map "$_ $a1 $siz + $col\n", @sku;} @tslh} @sizes } @colors;

(I have added spaces between the fields to make the output easier to read.) This prints (I copy only the beginning and the end of the 240-line printout):

SKU1 t S BLU SKU2 t S BLU SKU3 t S BLU SKU1 s S BLU SKU2 s S BLU ... SKU3 l 2X BLK SKU1 h 2X BLK SKU2 h 2X BLK SKU3 h 2X BLK

The beauty (and fun) of this solution is of course that it holds in just one line of code (in pure Perl, without using a module to do the work behind the scene).

There are a number of downsides to this solution, however: first, it is far less easy to understand, it is actually hardly readable. Even though I just wrote it, I am not sure how I would explain it to make it clearly understandable.

To tell the truth, it was also a bit complicated for me to write it: it took me about 3 minutes to write the foreach nested loops above (which I did not even need to test), and and it took me slightly more than half an hour to get the nested map function calls to work correctly. So, in brief, this was just for the fun, I do not recommend this solution.


In reply to Re: Multiple Permutation handling by Laurent_R
in thread Multiple Permutation handling by midget2000x

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (3)
As of 2024-04-24 22:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found