2つ以上の単語を翻訳するRuby豚ラテン翻訳者に問題があります。私は、母音、子音、または2つの子音で始まる単語を私の関数で翻訳する方法をうまく理解しました。そして、最初の関数で.mapを使うtranslate_wordsという2番目の関数を作成したいと思っています。Ruby複数の単語豚ラテン
文字列「eat pie」が送信されると、出力は「eat pieay」になります。それは2番目の単語を変更するだけでなく、誤って( "eatay iepay"にする必要があります)。私は運がないので、他の複数のソリューションを見てきました。私はまだ正規表現で非常に新しいので、それらのソリューションは私の頭の上に少しだった。
このプロジェクトはRSpecで動作し、私の下にテストコードを追加しました。ここで
は私のコードです:
def translate(input)
pig_string = ''
if input[0] =~ /[aeiou]/
return input + 'ay'
elsif input[0] =~ /[^aeiou]/ && input[1] =~ /[aeiou]/
return input[1..-1] + input[0] + 'ay'
elsif input[0..1] =~ /[^aeiou]/
return input[2..-1] + input[0..1] + 'ay'
else
return input[0] + input + 'ay'
end
end
def translate_words(multi_words)
word_count = multi_words.split.size
if word_count > 1
multi_words.map! do |word|
translate(word)
end
end
end
RSpecの:bitsapienとセルジオTulentsevにより、上記のコメントを1として
it "translates two words" do
s = translate("eat pie")
expect(s).to eq("eatay iepay")
end
コードに入力、予想出力、実際の出力を含めます。できるだけコピーペーストを実行するのが簡単です。 –
あなたのコードは、小さな変更を加えるだけで問題なく動作します。代わりに 'multi_words.split.map!'を実行してください。 – bitsapien
@bitsapien:「絶対にうまくいく」 - まあ、ほとんど。文字列が1つの単語で構成されているときは、何もしません。 1つの単語の文字列は、複数単語の文字列の特別な場合です:) –