Re: fixed list combinatorics
- From: rvtol+news@xxxxxxxxxxxx (Dr.Ruud)
- Date: Wed, 28 Nov 2007 20:29:51 +0100
"Dan Klose" schreef:
Hi list,
I am having a bad day and would really like some help (the coffee
hasn't).
I have a list that looks like:
my @list = (1,2,3,4);
I would like to generate all patterns that follow:
1
2
3
4
12
123
23
34
234
1234
The list can be of any length and the next number in the list must be
the current number +1 ( i am not working with numbers - i think it is
easier to explain this way).
How do I do this? I did look at the Combinatorics module however it
does not impose fixed ordering as far as I can see.
Compare it to this list:
0000 .... X
0001 ...1
0010 ..2.
0011 ..21
0100 .3..
0101 .3.1 X
0110 .32.
0111 .321
1000 4...
1001 4..1 X
1010 4.2. X
1011 4.21 X
1100 43..
1101 43.1 X
1110 432.
1111 4321
It seems you want to filter out the all-empty and disconnected variants
(marked with X).
perl -wle'
print for grep /\S/ && !/\S\s+\S/,
map {
$_ = reverse sprintf("%b", $_);
tr/0/ /;
s/1/$-[0]+1/eg;
$_;
} 0..2**4-1
;
'
1
2
12
3
23
123
4
34
234
1234
Alternative:
$ perl -wle'
print for grep /\S/ && !/\S\s+\S/,
map {
($_ = reverse sprintf("%b", $_)) =~ tr/01/ 7/;
$_ &= "1234";
} 0..15
;
'
1
2
12
3
23
123
4
34
234
1234
--
Affijn, Ruud
"Gewoon is een tijger."
.
- Follow-Ups:
- Re: fixed list combinatorics
- From: Yitzle
- Re: fixed list combinatorics
- References:
- fixed list combinatorics
- From: Dan Klose
- fixed list combinatorics
- Prev by Date: Variable division, assignment and sprintf in one line
- Next by Date: Re: Variable division, assignment and sprintf in one line
- Previous by thread: Re: fixed list combinatorics
- Next by thread: Re: fixed list combinatorics
- Index(es):
Relevant Pages
|
|