2016-03-02 107 views
0

我正在製作藝術家推薦計劃,該計劃將匹配顯示用戶已經看過現場和多少次的藝術家的哈希值,並顯示給定藝術家共享的藝術家哈希值賬單和多少次。比賽分數是根據這些數字計算的。如果用戶已經看到了時代的一些藝術家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值不會改變。

+0

爲什麼急於選擇答案?這樣做可能會阻礙其他答案,而且對於那些仍在解答問題的人(不是我),艾莫很不考慮。許多人在選擇前至少等待幾個小時。 –

+0

對不起,以後再等一會 – sivanes

回答

1

所有的輸入都是整數,所以ruby使用整數除法。看起來這可能會產生1,並且1 - 1爲零。將to_f添加到您的等式中,以便使用浮點數除法,例如:

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