펄 -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;
}