- 682 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 20:56:28 ]
- public static IEnumerable<string> FizzBuzz(int max) {
var fizz = Fizz(); var buzz = Buzz(); foreach (var i in Enumerable.Range(1, max)) { bool isFizz = fizz.First(); bool isBuzz = buzz.First(); fizz = fizz.Skip(1); buzz = buzz.Skip(1); if (isFizz && isBuzz) { yield return "FizzBuzz"; } else if (isFizz && !isBuzz) { yield return "Fizz"; } else if (!isFizz && isBuzz) { yield return "Buzz"; } else { yield return i.ToString(); } } } こんな感じのメソッドを作ってみたのですが、複数のIEnumerableを並行して進めながら処理するforeachみたいなのってないのでしょうか? 自前でFizzとBuzzを1つずつ進めてるのがいまいちスマートじゃない気がして、複数のIEnumerableを並行して進める手軽な方法ってないでしょうか? foreach (var i, isFizz, isBuzz in Enumerable.Range(1, max), Fizz(), Buzz()) { とかみたいな雰囲気でまとめて書く方法ってないですか?
|

|