> it generates these kinds of patterns very efficiently
I tried Algorithm::Combinatorics for a similar task. Both of these examples generate an array of strings n characters in length of all combinations of letters (e.g. 4 = 'aaaa'..'zzzz').
Am I doing something stupid with the module, or perl?
Perl string iteration:
real 0m0.129s
time perl -wle '
$n = shift; die "need a number" unless $n and $n =~ /^\d+$/;
$a = "a" x $n; $c = 0; $e = 26**$n;
while () { push @x, $a; $a++ and $c++; last if $c == $e }
print scalar @x' 4
Using Algorithm::Combinatorics:
real 0m0.858s
time perl -MAlgorithm::Combinatorics=:all -wle '
$n = shift; die "need a number" unless $n and $n =~ /^\d+$/;
@_ = ("a".."z"); $i = variations_with_repetition(\@_,$n);
while ($c = $i->next){
for (@$c) { $x .= $_ }
push @x, $x; undef $x }
print scalar @x' 4
Be careful with the parameter because this can make a very big array.
4 is only ~2MB but 5 is 70MB and the 6 character array is around 2000MB.
-
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.
|