我想從數組中提取一個元素,可預測基於字符串輸入。基於Ruby中的散列字符串從數組中獲取項目
我的用例:根據名稱爲用戶生成一種顏色。
一個(故障)的實施方法是生成從用戶名的散列,並且將其降低到一個值0-25之間,像這樣:
def color
colors = array_of_25_colors
colors[Digest::MD5.hexdigest(name).to_i(16) & 25]
end
此實現只返回8種可能的顏色,所以不好。
編輯
我已經試過另一種實現是從名稱的第一個字符使用的字節碼,但因爲我允許使用Unicode中的名字,這是不實際的:
"aaron".first.bytes.first - 97
=> 0 #Okay!
"zac".first.bytes.first - 97
=> 25 #Nice!
"örjan".first.bytes.first - 97
=> 98 #Doh!
什麼可以工作的實現看起來像?
我一直在使用「&」的思想,這是像吸盤一樣的divmod運算符!謝謝。 :) –
使用'字節'像@theTRON建議下面使這個小清潔:'顏色[name.bytes.reduce(:+)%25]' – bundacia