我的代碼沒有給出預期的回報。下面是代碼
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]。
uj5u.com熱心網友回復:
好吧,"YELLOW"不是這樣的,colors所以沒有任何東西添加到你result的可能性中。
您可能希望使用#map. "YELLOW"在這種情況下,使用以下內容nil將添加結果陣列。
class Turn
def initialize(passcode:)
@passcode = passcode
end
def guess(colors)
@passcode.each_with_index.map do |passcode_color, idx|
if colors[idx] == passcode_color
:exact
elsif colors.include? passcode_color
:partial
end
end
end
end
如果您想包含類似:notfound該場景的內容,您可以添加一個else.
class Turn
def initialize(passcode:)
@passcode = passcode
end
def guess(colors)
@passcode.each_with_index.map do |passcode_color, idx|
if colors[idx] == passcode_color
:exact
elsif colors.include? passcode_color
:partial
else
:notfound
end
end
end
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/510041.html
標籤:红宝石
