[Israel.pm] What does this code do?

Shlomi Fish shlomif at iglu.org.il
Sun May 2 04:43:28 PDT 2004


> > I may try an iterating subroutine. Give me some
> > time, if no one beats me to it.

Well, here's a code for an iterating recursion that also generates the same 
{0,1,2}**$N permutations. (but does not do the rest of the calculation):

<<<
#!/usr/bin/perl -w

use strict;

my $N = shift;

my @array = ((0) x $N);

MAIN_LOOP: while (1)
{
    print join("", @array), "\n";
    my $index = 0;
    while (($index < $N) && ($array[$index] == 2))
    {
        $array[$index] = 0;
        $index++;
    }
    if ($index == $N)
    {
        last MAIN_LOOP;
    }
    $array[$index]++;
}
>>>

What I did to get from one permutation to another is increment the number in 
base 3. I.e: turn all initial 2's to 0 and increment the next number.

Regards,

	Shlomi Fish


---------------------------------------------------------------------
Shlomi Fish      shlomif at iglu.org.il
Homepage:        http://shlomif.il.eu.org/

Quidquid latine dictum sit, altum viditur.
        [Whatever is said in Latin sounds profound.]



More information about the Perl mailing list