Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

RE: Re: How can I improve this?

by lhoward (Vicar)
on Jul 25, 2000 at 07:51 UTC ( #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).


Comment on RE: Re: How can I improve this?
Download Code
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
Node Status?
node history
Node Type: note [id://24243]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (6)
As of 2014-08-30 15:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (293 votes), past polls