Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

RE: Re: How can I improve this?

by lhoward (Vicar)
on Jul 25, 2000 at 07:51 UTC ( [id://24243]=note: print w/replies, xml ) Need Help??


in reply to Re: How can I improve this?
in thread How can I improve this?

Since you seemed interested.. here is my permutation generator. It takes a base string (should be empty) as its first argument, then refrences to as many lists as you want as the other arguments and returns a refrence to a list containg all the list-element concatination permutations:
my $foo=permute('',[0..2],[0..2],[0..3],[0..2]); sub permute{ my $prefix=shift; my @arrays=@_; my $c=shift @arrays; my @ret=(); foreach(@$c){ my $f=$prefix.$_; if(scalar(@arrays)==0){ push @ret,$f; }else{ my $t=permute($f,@arrays); push @ret,@$t; } } return \@ret; }
I'm not really happy with the implementation of it, but I like it in spirit (of course, I'm a big fan of recursive algorithms to begin with).

Replies are listed 'Best First'.
My permutor
by merlyn (Sage) on Jul 25, 2000 at 07:57 UTC
    Well, since everyone is posting their permutors, here's mine:
    sub permute { my $last = pop @_; unless (@_) { return @$last; } return map { my $left = $_; map "$left$_", @$last } permute(@_); }

    -- Randal L. Schwartz, Perl hacker

    Drool
    by gryng (Hermit) on Jul 25, 2000 at 17:01 UTC
      Drool....

      Oh I like that.

      Mmmm,
      Gryn

      does this work? how do you call it?

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (7)
As of 2024-03-28 19:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found