ええ、そうなの!? と思ったので深追いしてみた。 逆FizzBuzzって、オートマトンなので正規表現を使うと楽に出来るはず。 Perl で 逆FizzBuzz 状態遷移図を書いてみるとこう。 ほんとは1〜15まで全て状態を書いて、ε遷移を加えてεの長さも1とした最少の単語を見付けなければならない。 で、これをこのPDFの方法で正規表現に書き直してみる。だるかったのでfizzはF、buzzはB、fizzbuzzはZにしておいた。 my $reg_inv_fizzbuz = qr/^( (((((F?B)?F)?F)?B)?F)?Z (FBFFBFZ)* (F|FB|FBF|FBFF|FBFFB|FBFFBF) |(((((F?B)?F)?F)?B)?F)?Z |((((F?B)?F)?F)?B)?F |(((F?B)?F)?F)?B |((F?B)?F)?F |(F?B)?F |F?B |F