Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: loop in loop method evasion

by eye (Chaplain)
on Dec 26, 2009 at 06:00 UTC ( [id://814399]=note: print w/replies, xml ) Need Help??


in reply to loop in loop method evasion

Another approach to this is to recognize that your sequence of strings can form a one-to-one map with a sequence of integers. You could then use a single loop and a function to map those integers into your strings.

The trouble is that your task is enormous. You want to generate 36^15 strings. That is well over 2E+23 strings that will require in excess of 1,000,000 exabytes.

Forget the appearance of your code. You have problems if you want this to finish running this year or if you want to save these strings.

Replies are listed 'Best First'.
Re^2: loop in loop method evasion
by ikegami (Patriarch) on Dec 26, 2009 at 06:56 UTC

    Another approach to this is to recognize that your sequence of strings can form a one-to-one map with a sequence of integers.

    The advantage of this method is that it uses no memory.

    # XXX Doesn't handle negatives sub idiv { my ($dividend, $divisor) = @_; use integer; my $quotient = $dividend / $divisor; my $remainder = $dividend - ( $quotient * $divisor ); return ( $quotient, $remainder ); } my @chartab = (0..9, 'a'..'z'); my $N = 3; for (0 .. @chartab**$N-1) { my $x = $_; for (1..$N) { ($x, my $i) = idiv($x, 0+@chartab); print $chartab[$i]; } print ','; }
Re^2: loop in loop method evasion
by motzi (Sexton) on Dec 26, 2009 at 15:43 UTC
    Well, about 15-character string is only theoretically task, sure i will not use that much, in practice i will only need 5-6 length string max.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://814399]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (4)
As of 2024-04-18 04:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found