JRubyを使ってFizz-Buzz問題を解く

JRubyを使ってFizz-Buzz問題を解いてみましょう。以下手順。

  • Java(JDK)をインストールします。
    • (省略)
  • JRubyをダウンロードします。
    • JRuby→Download!→zipファイル(たとえばjruby-bin-1.0.0RC2.zip)
  • JRubyを展開します。
    • unzip jruby-bin-1.0.0RC2.zip
  • バッチファイルjruby.batを作ります。
@echo off
set JAVA_HOME=C:\work\jdk1.5.0
C:\work\jruby\jruby-1.0.0RC2\bin\jruby %1 %2 %3 %4 %5 %6 %7 %8 %9
a = Array.new
(1..100).each do |k|
  if k % 3 == 0 and k % 5 == 0
    a << 'FizzBuzz'
  elsif k % 3 == 0
    a << 'Fizz'
  elsif k % 5 == 0
    a << 'Buzz'
  else
    a << k
  end
end
puts a
C:\work> jruby fizz.rb
1
2
Fizz
4
Buzz
Fizz
(略)
FizzBuzz
91
92
Fizz
94
Buzz
Fizz
97
98
Fizz
Buzz

追記:
実際にはjruby.batを作る必要はなくて、binを環境変数PATHに含めておき、環境変数JAVA_HOMEを適切に設定しておくだけでよい。
追記:
sumimさんが、rubycoのこのエントリの意図を非常に良く理解してくださって、とてもうれしい。

噂の JRuby が思いのほか簡単に使えそうだということがわかったので

Ruby の Thread.pass によるスレッドの明示的切り替えは異常に重い? - Smalltalkのtは小文字です