ruby에서 돼지 라틴어 번역기를 만드는 중입니다. 그것은 대부분의 단어에 대해 작동하지만, 한 번에 한 단어 이상으로 작동하도록하는데 어려움을 겪고 있습니다. 그래서 예를 들어 "apple"이라는 단어를 넣을 때 "appleay"를 얻습니다. 그러나 하나 이상의 단어가 입력되면 단어를 번역하지 않습니다. 나는 해결책을 찾기 위해 주위를 둘러 보았지만 공허가왔다. 여기에있는 몇 가지 다른 스레드가 나를 멀리까지 데려 오는 데 정말로 도움이되었습니다. 모든 팁은 크게 감사하겠습니다.Ruby pig 라틴어 번역기 (복수 단어)
"qu"가 자음으로 간주되는 "quiet"및 "square"의 올바른 돼지 라틴어 번역을 허용하기 위해 if/else 문에서 두 가지 예외를 추가했습니다.
도움을 주신 분들께 미리 감사드립니다!
def translate (word)
alpha = ('a'..'z').to_a
vowels = %w[a e i o u]
consonants = alpha - vowels
if vowels.include?(word[0..0])
word + 'ay'
elsif consonants.include?(word[0..0]) && consonants.include?(word[1..1])
word[2..-1] + word[0..1] + 'ay'
elsif word[0..1] == "qu"
word[2..word.length]+"quay"
elsif word[0..2] == "squ"
word[3..word.length]+"squay"
else consonants.include?(word[0])
word[1..-1] + word[0..0] + 'ay'
end
end
올바른 결과를 얻으려면 어디에서 코드를 작성해야합니까? 앞뒤에 if/else 문을 넣으면 "stack level too deep"오류가 발생합니다. – PaperKraftMike
'text'변수는 변환 할 입력 단어가 들어있는 문자열 인 메소드 본문 외부 (즉 프로그램의 마지막 줄)에 배치합니다. – user2398029
그래서 메서드의 마지막 "끝"전에? 그리고 "텍스트 변수"는 그냥 그대로 두어야 만합니까? 거기에서 메서드의 입력을 직접 지시해야합니까? – PaperKraftMike