Leser: 2
6 Einträge, 1 Seite |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#!/usr/bin/perl use strict; use warnings; use Math::Combinatorics; my @list = qw(Alpha Beta Caesar Delta); for( 2 .. scalar(@list) ){ my $comb = Math::Combinatorics->new( count => $_, data => [@list], ); while( my @perms = $comb->next_combination ){ print join( ' ', @perms ), "\n"; } }
1
2
3
4
5
6
7
8
9
10
11
12
C:\>combinatorics.pl
Alpha Beta
Alpha Caesar
Alpha Delta
Beta Caesar
Beta Delta
Caesar Delta
Alpha Beta Caesar
Alpha Beta Delta
Alpha Caesar Delta
Beta Caesar Delta
Alpha Caesar Beta Delta
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @words = qw/foo bar buz qiz/; my $words_cnt = @words; my @wanted = grep { @$_ >= 2; } map { my $i = $_; [ @words[grep { $i->[$_] > 0} 0..@$i-1] ]; } map { [ split //, sprintf "%0" . $words_cnt . "b", $_ ] } 1..(2**$words_cnt-1); warn Dumper \@wanted;
murphy+2007-08-13 15:51:21--Das Problem (ohne Beschränkung auf mindestens zwei Wörter pro Ausgabemenge) gab's auch mal als Rätsel der Woche: Wiki » Wissensbasis » Rätsel der Woche #2
6 Einträge, 1 Seite |