SEND MORE MONEY in Ruby(2)

 昨日、Pythonで作ったプログラムRubyに翻訳してみました。(^_^;
 最近は、PCのスピードが速くなりすぎて、Cで作ると、改良しても、たいして差がないのですが、スクリプト言語だとちょっと改良すると、すぐ結果に反映するのでやりがいがありますね。(^_^;
 ちなみに、Rubyの場合、速くなったのは、ほとんどHn関数をやめたことによるものです。(^_^;

●SendMoreMoney2.rb

# encoding: Shift_JIS
# SendMoreMoney2.rb

def main()
  tm=Time.now  # Timer Start
  p=(0..9).to_a  # [0,1,2,3,4,5,6,7,8,9]
  p.permutation(8) do |s,e,n,d,m,o,r,y|
    next if s*m==0  # (s==0||m==0)ならスキップ
    send  =         1000*s+100*e+10*n+d
    more  =         1000*m+100*o+10*r+e
    money = 10000*m+1000*o+100*n+10*e+y
    next if send+more!=money
    # チェックを潜り抜けたものだけを表示
    puts "  "+send.to_s
    puts " +"+more.to_s
    puts "-------"
    puts " "+money.to_s
    puts
  end

  tm=Time.now-tm  # Timer Stop
  print "Runtime : %.3f [sec]\n"%tm
end

# ライブラリとして読み込まれた場合は実行しない。
if $0 == __FILE__
  main()
end

●実行結果

  9567
 +1085
-------
 10652

Runtime : 1.560 [sec]

※参考URL
Python の if __name__ == '__main__': を Perl, Ruby, PHP で行う

SEND MORE MONEY C言語プログラム - rscの日記
SEND MORE MONEY(2) C++ - rscの日記
SEND MORE MONEY(3) C言語プログラム - rscの日記
SEND MORE MONEY JavaScriptプログラム - rscの日記
SEND MORE MONEY in Java - rscの日記
SEND MORE MONEY in Python - rscの日記
SEND MORE MONEY in Ruby - rscの日記
SEND MORE MONEY in Python(2) - rscの日記
SEND MORE MONEY in Python(3) - rscの日記

たのしいRuby 第3版

たのしいRuby 第3版

Ruby逆引きハンドブック

Ruby逆引きハンドブック