C#でFizzBuzz
はじめに
C#でFizzBuzzを書きます。
ちなみに開発環境は以下のとおりです。
- Windows10 Home Version 1803
- Intel(R) Core(TM) i7-4600U CPU @2.10GHz 2.70GHz
- Memory 8GB
- Visual Studio Community 2017 Version 15.9.6
- .Net Framework 4.6.1
目次
FizzBuzzとは?
こちらをどうぞ。
解答が書いてあるようなものじゃないですか!
とりあえず「100」までFizzBuzzをします。
FizzBuzz1個目
using System; namespace FizzBuzz2019 { class Program { static void Main(string[] args) { for (int i = 1; i <= 100; i++) { if(i % 3 == 0 && i % 5 == 0) Console.WriteLine("FizzBuzz"); else if(i % 3 == 0) Console.WriteLine("Fizz"); else if(i % 5 == 0) Console.WriteLine("Buzz"); else Console.WriteLine(i.ToString()); } } } }
FizzBuzz1個目の所感
for文の「1」や「100」、if文の「3」「5」がマジックナンバーに見えるなぁ。 判定する部分はメソッドにした方が良いかも。書いてある内容が重複しているし。 となるとConsole.WriteLine()も1個にした方が良さそうか。
FizzBuzz2個目
using System; using System.Text; namespace FizzBuzz2019 { class Program { // private static readonly int FIZZBUZZ_START_NUMBER = 1; private static readonly int FIZZBUZZ_END_NUMBER = 100; private static readonly int CALL_FIZZ_NUMBER = 3; private static readonly int CALL_BUZZ_NUMBER = 5; // static void Main(string[] args) { for (int i = FIZZBUZZ_START_NUMBER; i <= FIZZBUZZ_END_NUMBER; i++) { var message = new StringBuilder(); if(IsFizz(i) && IsBuzz(i)) message.Append("FizzBuzz"); else if(IsFizz(i)) message.Append("Fizz"); else if(IsBuzz(i)) message.Append("Buzz"); else message.Append(i.ToString()); Console.WriteLine(message.ToString()); } } // private static bool IsFizz(int n) { return n % CALL_FIZZ_NUMBER == 0; } // private static bool IsBuzz(int n) { return n % CALL_BUZZ_NUMBER == 0; } } }
FizzBuzz2個目の所感
for文に違和感を覚える。
FizzBuzz3個目
using System; using System.Linq; namespace FizzBuzz2019 { class Program { // private static readonly int FIZZBUZZ_START_NUMBER = 1; private static readonly int FIZZBUZZ_END_NUMBER = 100; private static readonly int CALL_FIZZ_NUMBER = 3; private static readonly int CALL_BUZZ_NUMBER = 5; // static void Main(string[] args) { var call_fizzbuzz = Enumerable.Range(FIZZBUZZ_START_NUMBER, FIZZBUZZ_END_NUMBER) .Select(i => IsFizz(i) && IsBuzz(i) ? "FizzBuzz" : IsFizz(i) ? "Fizz" : IsBuzz(i) ? "Buzz" : i.ToString()); foreach (var item in call_fizzbuzz) Console.WriteLine(item); } // private static bool IsFizz(int n) { return n % CALL_FIZZ_NUMBER == 0; } // private static bool IsBuzz(int n) { return n % CALL_BUZZ_NUMBER == 0; } } }
FizzBuzz3個目の所感
Rangeの書き方、分からなかったので参考1にしました。
三項演算子の部分が読みにくい気がする。
結局、繰り返し使ってるやん!
感想
まだ何か考える余地がありそう。
英語力ぅ・・・