Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Permuting n elements

by tilly (Archbishop)
on Aug 24, 2000 at 08:19 UTC ( [id://29373]=CUFP: print w/replies, xml ) Need Help??

This is a faster version of How do I permute N elements of a list?. The odds are very good that it spends more time printing than permuting. Put in an if test around the print to print, say, every 100 lines or so to see it really fly.

The reason that it is more efficient than the FAQ is that it spends as little energy copying data as possible.

#!/usr/bin/perl -n # tsc-permute: permute each word of input use subs qw( _permute ); permute(split); { my @perm; my @unperm; sub permute { @perm = (); @unperm = @_; _permute; } sub _permute { if (@unperm) { push @perm, pop @unperm; foreach (1..@perm) { push @perm, shift @perm; _permute; } push @unperm, pop @perm; } else { print "@perm\n"; } } }

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (4)
As of 2024-04-25 09:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found