DartでFizzBuzz 2 -剰余無し&for文無し-

DartでFizzBuzzシリーズその2。

よく問題に挙がる、剰余無しバージョンから。

var fizz = 3;
var buzz = 5;

for (var i = 1; i <= limit; i++) {
  var sb = new StringBuffer();
  if (i == fizz) {
    sb.add("Fizz");
    fizz += 3;
  }
  if (i == buzz) {
    sb.add("Buzz");
    buzz += 5;
  }
  print(sb.isEmpty ? "$i" : sb.toString());
} 

うーん、あまり面白くないなぁ・・・

次は、for文無しバージョン。

var src = [0];

src.reduce(null, (dummy, i) {
  if (i != limit) src.add(i + 1);
  return src;
}).map((i) {
  var sb = new StringBuffer()
                .add(i % 3 == 0 ? "Fizz" : "")
                .add(i % 5 == 0 ? "Buzz" : "");
  return sb.isEmpty ? "${i}" : sb.toString();
}).forEach(print); 

無理やり感が半端ない上、reduceの使い方を思いきり間違ってる。 別にreduceでなくても良かったんだけど、 何となくMethod Chainしてみたかったので。

Method ChainのCode styleがこれで良いか不安。

このエントリーをはてなブックマークに追加
comments powered by Disqus