Perl

Tidy [perl]

perl のフォーマッタ。

perltidy -st -se

で標準入力、ファイル引数から標準出力へのフィルタとして働く。

@a=qw/1 0 1 1 0 0 0/; sub f($$) {($n,$p)=@_; return 1 if($n==$#a&&$a[$n]==0&&$p==0); return 0 if($n==$#a); \
if($a[$n]==0){ if($p>0){f($n+1,$p-1)}else{$n==$#a} } else{ f($n+1,$p+1) }}\
print f(0,0)?'true':'false';

@a = qw/1 0 1 1 0 0 0/;

sub f($$) {
    ( $n, $p ) = @_;
    return 1 if ( $n <strike> $#a && $a[$n] </strike> 0 && $p == 0 );
    return 0
      if ( $n == $#a );
    if ( $a[$n] == 0 ) {
if ( $p > 0 ) { f( $n + 1, $p - 1 ) }
else { $n == $#a }
    }
    else { f( $n + 1, $p + 1 ) }
}
print f( 0, 0 )
  ? 'true
'
  : 'false';

# h = 0 | 1 h h という構文(hは非終端記号)で定義される言語の判定器
# strict な末尾再帰による実装
# 動いてるのかこれ。