我有一个代码,这是不给所需的回报.下面是代码
class Turn
def initialize(passcode:)
@passcode = passcode
end
def guess(colors)
result = []
passcode.each_with_index do |passcode_color, idx|
if colors[idx] == passcode_color
result << :exact
elsif colors.include?(passcode_color)
result << :partial
end
end
result
end
private
attr_reader :passcode
end
passcode = ["RED", "GREEN", "BLUE", "YELLOW"]
player = Turn.new(passcode: passcode)
player.guess(["RED", "GREEN", "BLUE", "GREEN"]
上面的方法调用给出的输出为=〉[:exact,:exact,:exact]。
同时,这是我想要的输出=〉[:exact,:exact,:exact,:partial]。
我认为颜色数组中的最后一种颜色(绿色)包含在密码中,但没有包含在确切的位置,因此需要部分颜色。
请,我如何修改代码得到这个输出=〉[:exact,:exact,:exact,:partial].
1条答案
按热度按时间jv4diomz1#
"YELLOW"
不在colors
中,因此没有为这种可能性向result
添加任何内容。您可能希望使用
#map
。在"YELLOW"
的情况下,使用以下代码,nil
将被添加到结果数组中。如果您希望在该场景中包含类似
:notfound
的内容,则可以添加else
。