论坛首页 Java企业应用论坛

趣味编程:24点算法实现

浏览 39133 次
精华帖 (0) :: 良好帖 (2) :: 新手帖 (2) :: 隐藏帖 (1)
作者 正文
   发表时间:2009-03-04  
可以用递归吗
0 请登录后投票
   发表时间:2009-03-16  
好久没有去考虑这种东东了...
0 请登录后投票
   发表时间:2009-03-17  
最简单的验证方法是大家把每一种算法的计算结果贴出来
0 请登录后投票
   发表时间:2009-12-11  
我写的那个算24的程序,1369的结果就两条,其余的都消掉了
9+3*(6-1)
(6-3)*(9-1)

1234的结果
(1+3)*(2+4)
4*(1+2+3)
1*2*3*4
0 请登录后投票
   发表时间:2009-12-12   最后修改:2009-12-12
大坟啊 ……

class Hash
  def * ys  # returns a new hash of {result => expression}
    inject({}){|hash, (x, x_expr)|
      ys.each{|y, y_expr| ['+', '-', '*', '/'].each {|op|
        (res = x.send(op, y) rescue nil) and hash[res] = "(#{x_expr} #{op} #{y_expr})"
        (res = y.send(op, x) rescue nil) and hash[res] = "(#{y_expr} #{op} #{x_expr})"
      }}
      hash
    }
  end
end
r = (1..9).to_a
tested = {}
r.each{|a| (r-[a]).each{|b| (r-[a,b]).each{|c| (r-[a,b,c]).each{|d|
  next if tested[[a,b,c,d].sort]
  if expr = ({a=>a} * {b=>b} * {c=>c} * {d=>d})[24] || (({a=>a} * {b=>b}) * ({c=>c} * {d=>d}))[24]
    puts expr
    tested[[a,b,c,d].sort] = true
  end
}}}}
puts "#{tested.size} results found" #=> 125 results found


ps:ruby 1.9
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics