Mr.Tです、こんにちは。
うーん、FizzBuzz問題です。
なんのひねりもなくやれば、これだけなんですが。
For i As Integer = 1 To 100
Dim result As String = i.ToString
If (i Mod 3 = 0) And (i Mod 5 = 0) Then
result = "FizzBuzz"
ElseIf (i Mod 3) = 0 Then
result = "Fizz"
ElseIf (i Mod 5) = 0 Then
result = "Buzz"
End If
Console.WriteLine("i={0}", result)
Next
問題として、「1~100までの表示をする」とか、「3の倍数、5の倍数、3と5の倍数の判定」
この二つ。難しいもんじゃない。
これを「ふつーそんなことしねーヨ!」ということをすると、楽しくなるかもしれない。
小手先で、i mod 3とかを関数にしてみるとか、Const宣言してみるとか、色々あるんだけどそれは面白くない。
ミソである、判定を楽しくできないか?
じゃあ、一つ考えてみる。
ifなどの判定をまったく使わずに、できないか?
Dim i As Integer
Dim ViewMessage As List(Of String) = New List(Of String)
For i = 0 To 100
ViewMessage.Add(i.ToString)
Next
For i = 3 To 100 Step 3
ViewMessage.Item(i) = "Fizz"
Next
For i = 5 To 100 Step 5
ViewMessage.Item(i) = "Buzz"
Next
For i = 15 To 100 Step 15
ViewMessage.Item(i) = "FizzBuzz"
Next
For i = 1 To 100
Console.WriteLine("i={0}", ViewMessage.Item(i))
Next
ううむ、簡単にできてしまって、オチない。
どーにか面白くならねーか?