SEND MORE MONEY in Ruby

 今度は、Javaで作ったSEND MORE MONEYのプログラムRubyに翻訳してみました。
 ふつう、Rubyの方がPythonよりも遅いですが、この場合、Rubyの方が倍速ぐらい速いようです。なぜだか、ここでも、逆転してしまいました。(^_^;
 こんなたわいもないプログラムでも、色々な言語で並べてみると面白いですね。(^_^;
※参考URL
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 Python(2) - rscの日記
SEND MORE MONEY in Ruby(2) - rscの日記
SEND MORE MONEY in Python(3) - rscの日記

●SendMoreMoney.rb

# encoding: Shift_JIS
# SendMoreMoney.rb

tm=Time.now  # Timer Start

def Hn(p,q,r,s,t)  # 10000*p+1000*q+100*r+10*s+t
  return 10*(10*(10*(10*p+q)+r)+s)+t
end

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  = Hn(0,s,e,n,d)
  more  = Hn(0,m,o,r,e)
  money = Hn(m,o,n,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

●実行結果

  9567
 +1085
-------
 10652

Runtime : 2.178 [sec]

たのしいRuby 第3版

たのしいRuby 第3版

Ruby逆引きハンドブック

Ruby逆引きハンドブック

Rubyの絵本

Rubyの絵本