2016-12-24 71 views
1

我想知道是否有一種方法來搜索鍵和包含值的哈希表。如果'鍵'或'值'包含ruby中的值,選擇散列元素

目前我在做這樣的:這裏

#for this example say 
bot,input = "rock","scissors" 

hash = Hash['rock', 'scissors', 'scissors', 'paper', 'paper', 'rock'] 
outcome = ([hash.rassoc(bot), hash.assoc(bot)] & [hash.rassoc(input),hash.assoc(input)]).flatten 

結果發現,包括機器人和輸入的所有哈希元素;然後檢查他們有哪些共同點。 只是不知道是否有一種方法我過來看了返回我會想:

outcome = [hash.rassoc(bot), hash.assoc(bot)] 

回答

3

這是你在找什麼?

winners = { "rock"=>"scissors", "scissors"=>"paper", "paper"=>"rock" } 

def outcome(winners, player, opponent) 
    return :win if winners.any? { |pair| pair == [player, opponent] } 
    return :lose if winners.any? { |pair| pair == [opponent, player] } 
    return :tie 
end 

outcome winners, "rock", "scissors" #=> :win 
outcome winners, "scissors", "rock" #=> :lose 
outcome winners, "rock", "rock"  #=> :tie 
+0

建議:使用'any?'而不是'find'來避免使用'!!'? –

+0

@ sagarpandya82,當然!謝謝。將編輯。 –