ちょっとしたことなんだけど

例えば1,2,3,4,5,6,6,6という数字がつまった配列があった時、それぞれ偶数なのか奇数なのかを判断してコンソールに出力する、といったプログラムを組む必要があるとする。その時の区切り文字は「, 」とする。
上記の配列の場合、次のように出力されるのが期待される結果だ。

奇数, 偶数, 奇数, 偶数, 奇数, 偶数, 偶数, 偶数

これをjavaで素直に実装すると、

int[] ary = {1,2,3,4,5,6,6,6};
for(int i=0; i<ary.length; i++) {
  System.out.print(i % 2 == 0 ? "偶数" : "奇数" + ", ");
}

実行結果は以下のようになり、最後に「,」が付いてしまう。

奇数, 偶数, 奇数, 偶数, 奇数, 偶数, 偶数, 偶数,

そのため、このプログラムは次のように修正するのが正しい。

int[] ary = {1,2,3,4,5,6,6,6};
for(int i=0; i<ary.length; i++) {
  System.out.print(i % 2 == 0 ? "偶数" : "奇数");
  if ( i-1 != ary.length ) System.out.print(", ");
}

ちょっとしたことなんだけど、プログラマにとってはストレス。でもまぁ仕方ないよな。。


ところがどっこい、rubyだとエレガントにかけました、という話。

ary = [1,2,3,4,5,6,6,6]
print ary.collect{ |x| x % 2 == 0 ? '偶数' : '奇数'}.join(', ')


痒いところに手が届くなぁ♪ちょっとしたことなんだけど。