FizzBuzz問題出ると、みんな「if文使ってあまり0なら~」って解き方ばっかりで、捻くれてる私はこうしてるっていう。
(学生の時、課題で出た時に、講師ですら理解してくれなくて悲しい思い出)
サクッと手元で組めるのがPowerShellだったので。
$start = 1 #初期値
$end = 100
$x03 = 3 #倍数3
$x05 = 5 #倍数5
for ($i = $start; $i -le $end; $i++){
$result = 0 #結果を記録
if($i -eq $x03){
$result += 1
$x03 += 3
}
if($i -eq $x05){
$result += 2
$x05 += 5
}
# 結果を表示
switch ($result) {
1 {write-host "Fizz"; break}
2 {write-host "Buzz"; break}
3 {write-host "Fizz Buzz"; break}
default {write-host $i; break}
}
}
「$result
は何してるの?」って人は2進に置き換えたら分かるかも。
- 余りを求めない
- if祭りにならないから分かりやすい(はず
処理的にもこっちのが負担少ないはず(しらんけど
もうちょっと弄ったら、対象の倍数が変わったりとか、増減したりとか、対応しやすいように書けるはず。