FizzBuzz with PowerShell - PowerShell Scripting Weblog

2007/11/06

FizzBuzz問題をちょっとひねくれて解くとこんな感じでしょうか

1..100|%{$t="";if($_ % 3 -eq 0){$t+="Fizz"};if($_ % 5 -eq 0){$t+="Buzz"};if($t -eq ""){$_}else{$t}}

3と5の倍数のとき、3の倍数と5の倍数の両方の結果をつなげて書けばいいということで、3と5の倍数の場合、という条件文を書かなくていいというのがFizzBuzzのポイントだと勝手に思ってます(もちろん素直に場合分けしてやってもよいです)。そこでそれを考慮しなければならないFizzBuzzDozz問題を出した、というのが出題意図だったんですね、実は。以下、解答例。

1..100|%{$t="";if($_ % 3 -eq 0){$t="Fizz"};if($_ % 5 -eq 0){$t="Buzz"};if($_ % 15 -eq 0){$t="Dozz"};if($t -eq ""){$_}else{$t}}

これを解くには素直に3の倍数、5の倍数、3と5の倍数を条件分けしないといけません。$_ % 15 -eq 0は最小公倍数という数学の概念を知っていないと出てこない解ですが、素直に$_ % 3 -eq 0 -and $_ % 5 -eq 0でも無論OKですが、少し冗長という気もします。ですが3と5の倍数は15の倍数だ、という「解釈」を人間がやるかコンピュータがやるか、どちらがいいかは議論の分かれるところだと思います。

元記事:http://blogs.wankuma.com/mutaguchi/archive/2007/11/06/106291.aspx

トラックバック

トラックバックはまだありません

トラックバックPing:


コメント

コメントはまだありません


コメントをどうぞ

名前 (省略可) :
E-mail or URL (省略可) :


前の記事へ | 次の記事へ

Copyright © 2005-2016 Daisuke Mutaguchi All rights reserved

mailto: mutaguchi at roy.hi-ho.ne.jp

Awards

Books

Twitter