基于Ruby哈希中匹配键值的计算

时间:2016-03-02 21:39:48

标签: ruby hash

我正在制作艺术家推荐计划,该计划将匹配显示用户已经看过的艺术家的哈希表示多少次,与显示给定艺术家已与其共享账单的艺术家的哈希相对应。匹配分数基于这些数字计算。如果用户已经看过一些艺术家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的值不会改变。

1 个答案:

答案 0 :(得分:1)

所有输入都是整数,因此ruby使用整数除法。看起来可能产生1,而1 - 1为零。在等式中添加一些to_f以使用浮点除法,例如:

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