Perl- 125 79文字
カウントには、「-ln
」オプションの4文字が含まれます。stdinからnを取ります。
新しい建設的なアプローチ:
@a=0;map{%a=();map{$a{"$`100$'"}=1while/0/g;}@a;@a=keys%a}1..$_;print for@a
n-1の解から各ツリーの各リーフ( "0")に新しい内部ノード( "100")を代入して、nの解を形成します。
(この概念は、内部ノードを使用して逐次生成された文字列を検証するために[100-> 0]置換をリーフする他のソリューションに負っています。その概念に基づいて私の回答を書いた後、同じ0-誰かの中間編集で100を超える構成方法。)
以前の再帰的アプローチ:
sub t{my$n=shift;if($n){--$n;for$R(0..$n){for$r(t($R)){for$l(t($n-$R)){push@_,"1$l$r"}}}}else{push@_,"0"}@_}print for t$_
再帰的なungolfed:
sub tree {
my ($n) = @_;
my @result = ();
if ( $n ) {
for $right_count ( 0 .. $n-1 ) {
for $right ( tree( $right_count ) ) {
for $left ( tree( ($n-1) - $right_count ) ) {
push @result, "1$left$right";
}
}
}
}
else {
push @result, "0";
}
return @result;
}
foreach $tree ( tree($_) ) {
print $tree;
}