Я не могу сделать мой код пройти этот тест:Рубин Условного тест
it "translates two words" do
s = translate("eat pie")
s.should == "eatay iepay"
end
Я не вижу изъян в моей логике, хотя это может быть очень грубой силой и может быть более простым способом прохождение теста:
def translate(string)
string_array = string.split
string_length = string_array.size
i=0
while i < string_length
word = string_array[i]
if word[0] == ("a" || "e" || "i" || "o" || "u")
word = word + "ay"
string_array[i] = word
elsif word[0] != ("a" || "e" || "i" || "o" || "u") && word[1] != ("a" || "e" || "i" || "o" || "u")
word_length = word.length-1
word = word[2..word_length]+word[0]+word[1]+"ay"
string_array[i] = word
elsif word[0] != ("a" || "e" || "i" || "o" || "u")
word_length = word.length-1
word = word[1..word_length]+word[0]+"ay"
string_array[i] = word
end
i += 1
end
return string_array.join(" ")
end
Вот сообщение Неудачный тест:
неудачи:
1) #translate translates two words
Failure/Error: s.should == "eatay iepay"
expected: "eatay iepay"
got: "ateay epiay" (using ==)
# ./04_pig_latin/pig_latin_spec.rb:41:in `block (2 levels) in <top (required)>'
Дополнительный код, проверяющий другие условия, относится к другим тестам, которые я уже прошел. В принципе, теперь я проверяю строку с двумя словами.
Пожалуйста, дайте мне знать, как я могу заставить код пройти тест. Заранее спасибо!
'% {AEIOU} 'должно быть'% w {aeiou} ', не так ли? '% {}' является неясным способом создания строки (включая все пробельные символы, в отличие от '% w()'). – cremno
@cremno, спасибо, что указал. Я исправил код соответствующим образом. – falsetru