ウィキペディア:Fizz Buzz
だいたいのお題は
「1」から「100」までの数を出力するプログラムを書け。ただし「3」の倍数のときは数の代わりに「Fizz」、「5」の倍数のときは「Buzz」と出力し、「3」と「5」両者の倍数のときには「FizzBuzz」と出力すること。というもの。
上記を踏まえ、以下の設定で
拡張メソッド病患者編
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace FizzBuzz
- {
- static class ExtMethods
- {
- public static string ToFizzBuzz(this int i)
- {
- return (i % 3 == 0) ? ((i % 5 == 0) ? "FizzBuzz" : "Fizz") : (i % 5 == 0) ? "Buzz" : i.ToString();
- }
- public static void ToConsole(this string s)
- {
- Console.WriteLine(s);
- }
- }
- class FizzBuzz1
- {
- public static void Main(string[] args)
- {
- Enumerable.Range(1, 100).ToList().ForEach(i => i.ToFizzBuzz().ToConsole());
- }
- }
- }
yeild 病患者編
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace FizzBuzz
- {
- class FizzBuzz2
- {
- static IEnumerable<string> CreateFizzBuzz(int start, int end)
- {
- int count = end - start + 1;
- foreach (int i in Enumerable.Range(start, count))
- {
- yield return (i % 3 == 0) ? ((i % 5 == 0) ? "FizzBuzz" : "Fizz") : (i % 5 == 0) ? "Buzz" : i.ToString();
- }
- }
- public static void Main(string[] args)
- {
- CreateFizzBuzz(1, 100).ToList().ForEach(s => Console.WriteLine(s));
- }
- }
- }
let 病患者編
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace FizzBuzz
- {
- class FizzBuzz3
- {
- static IEnumerable<string> CreateFizzBuzz(int start, int end)
- {
- int count = end - start + 1;
- return from i in Enumerable.Range(start, count)
- let s = (i % 3 == 0) ? ((i % 5 == 0) ? "FizzBuzz" : "Fizz") : (i % 5 == 0) ? "Buzz" : i.ToString()
- select s;
- }
- public static void Main(string[] args)
- {
- CreateFizzBuzz(1, 100).ToList().ForEach(s => Console.WriteLine(s));
- }
- }
- }
そして
FizzBuzz 2 へ続く。
1 件のコメント:
以下の修正を行いました。
各コード
Before:
(i % 15 == 0) ? "FizzBuzz" : (i % 5 == 0) ? "Buzz" : (i % 3 == 0) ? "Fizz" : i.ToString()
After:
(i % 3 == 0) ? ((i % 5 == 0) ? "FizzBuzz" : "Fizz") : (i % 5 == 0) ? "Buzz" : i.ToString()
コメントを投稿