创建字符表
作者:L. Grondin
http://rosalind.info/problems/ctbl/
示例输入
(dog,((elephant,mouse),robot),cat);
示例输出
00110 00111
源代码:ctbl-grondilu.pl
use v6;
sub MAIN(Str $input = "(dog,((elephant,mouse),robot),cat);") {
my $line = $input;
$line .= chop;
my $names = rx / <.ident>+ | <?after <[(,]> > <?before <[),]> > /;
my @name = $line.comb: $names;
my @sorting = map *.value, sort *.key, (@name Z=> ^@name);
$line ~~ s:g/$names/0/;
$line ~~ s:g/','//;
while $line ~~ / \( 0 ** 2..* \) / {
my $array = join(
'',
.prematch,
.subst(/0/, '1', :g),
.postmatch,
).subst(/<[()]>/, '', :g) given $/;
unless $array ~~ /^[ 0+ | 1+ ]$/ {
say $array.comb[@sorting].join: '';
}
$line ~~ s/\( (0+) \)/$0/;
}
}
Perl 6 示例