3

ルビーで豚のラテン語翻訳者の作成に取り組んでいます。ほとんどの単語で機能しますが、一度に複数の単語で機能させるのに苦労しています. たとえば、「apple」という単語を入力すると「appleay」になりますが、複数の単語を入力すると翻訳されません。私は解決策を探していましたが、空になりました。ここにある他のいくつかのスレッドは、私がここまで来るのに非常に役立ちました。どんなヒントでも大歓迎です。

また、if/else ステートメントにいくつかの例外を追加して、"quiet" と "square" を豚のラテン語で適切に翻訳できるようにしました。ここで、"qu" は子音と見なされます。

助けてくれてありがとう!

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
4

2 に答える 2

1

あなたはこのようにすることができます:

Alpha = ('a'..'z').to_a
Vowels = %w[a e i o u]
Consonants = Alpha - Vowels

def translate(word)
  if Vowels.include?(word[0])
    word + 'ay'
  elsif Consonants.include?(word[0]) && 
    Consonants.include?(word[1])
    word[2..-1] + word[0..1] + 'ay'
  elsif word[0..1] == "qu" 
    word[2..-1]+"quay"
  elsif word[0..2] == "squ"
     word[3..-1]+"squay"
  else Consonants.include?(word[0])
    word[1..-1] + word[0..0] + 'ay'
  end
end

puts "Enter some text to translate"
text = fgets
puts text.split.map(&method(:translate)).join(' ')
于 2013-01-13T22:41:02.387 に答える
0

それを複数の方法に分割するのはどうですか?つまり、文字列を単語に分割し、それらの単語を別のメソッドに送信して翻訳してから、それらを結合して出力するメソッドです。

def translator(sentence)
  words_to_translate = sentence.split(" ")
  translated_words = words_to_translate.map {|word| translate_word(word)}
  translated_sentence = translated_words.join(" ")
end

def translate_word(word)
  ...code here
  return a word
end
于 2014-01-07T15:21:02.557 に答える