【问题标题】:calculations based on matching keys' values in Ruby hashes基于 Ruby 哈希中匹配键值的计算
【发布时间】:2016-03-03 05:50:02
【问题描述】:

我正在制作艺术家推荐程序,该程序将匹配显示用户现场观看的艺术家及其次数的哈希值,以及显示特定艺术家与之共享账单的艺术家以及次数的哈希值。比赛分数是根据这些数字计算的。如果用户已经看过某位艺术家 x 次,并且给定的艺术家至少与该艺术家一起玩过一次,像这样:

user = {"artist7" => 3, "artist8" => 1}
artist1 = {"artist6" => 7, "artist7" => 7}

match = 0 

user.each do |k, v|
  if artist1[k]
    match += (1 - ((user[k] - artist1[k])/(user[k] + artist1[k])).abs)
  end
end

我已经在 irb 中尝试过了,match 的值没有改变。

【问题讨论】:

  • 为什么急于选择答案?这样做可能会阻止其他答案,并且 imo 对那些仍在研究答案的人(不是我)不体谅。许多人在这里至少要等几个小时才能做出选择。
  • 抱歉,以后会等更久

标签: ruby hash


【解决方案1】:

你所有的输入都是整数,所以 ruby​​ 使用整数除法。看起来这很可能产生1,而1 - 1 为零。将一些 to_f 添加到您的等式中以使用浮点除法,例如:

match += (1 - ((user[k] - artist1[k]).to_f/(user[k] + artist1[k])).abs)

【讨论】:

    猜你喜欢
    • 2022-07-06
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 2011-06-30
    • 2012-04-21
    • 2015-07-01
    相关资源
    最近更新 更多