私は perl で FizzBuzz を書くことをいじっています...具体的に言うと、悪夢のようなコード行を作成して、それができるかどうかを確認したいと思っています。もちろん、これはネストされた 3 項ステートメントを意味します。
ただし、15 年代では FizzBuzz は表示されず、Fizz のみが表示されることがわかりました。最初の 3 項ステートメントが true を返した場合、2 番目のステートメントをスキップしているだけであることを意味するため、理由を見つけることができません。
これが私が思いついた小さな悪夢です。はい、それはもっと悪いことかもしれませんが、私は実際には perl にそれほど強くありません。
#!/usr/bin/perl
for (my $i=1; $i<=100; $i++) {
( !( ($i % 3 == 0) ? print "Fizz" : 0) && !( ($i % 5 == 0) ? print "Buzz" : 0) ) ? print "$i\n" : print "\n";
}
出力の最初の 20 行を次に示します。
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
Fizz
16
17
Fizz
19
Buzz
これが起こる原因となる印刷ステートメントは何をしているのでしょうか?