0

私は元々、単語を取得し、その母音がアルファベット順に並んでいるかどうかを調べるメソッドを作成しました。以下のコードを使用してそれを行いました。

def ordered_vowel_word?(word)
  vowels = ["a", "e", "i", "o", "u"]

  letters_arr = word.split("")
  vowels_arr = letters_arr.select { |l| vowels.include?(l) }

  (0...(vowels_arr.length - 1)).all? do |i|
    vowels_arr[i] <= vowels_arr[i + 1]
  end
end

しかし、all? を使用して変更してみることにしました。方法。私は次のコードでそうしようとしました:

def ordered_vowel_word?(word)
  vowels = ["a","e", "i", "o", "u"]
  splitted_word = word.split("")
  vowels_in_word = []
  vowels_in_word = splitted_word.select {|word| vowels.include?(word)}

  vowels_in_word.all? {|x| vowels_in_word[x]<= vowels_in_word[x+1]}


end


ordered_vowel_word?("word")

なぜそれが機能しないのか、誰にもアイデアがありますか? 私はこれがうまくいくと思っていたでしょう。また、誰かがより良い解決策を持っている場合は、お気軽に投稿してください。ありがとう!

例は次のとおりです。

it "does not return a word that is not in order" do
  ordered_vowel_words("complicated").should == ""
end

it "handle double vowels" do
  ordered_vowel_words("afoot").should == "afoot"
end

it "handles a word with a single vowel" do
  ordered_vowel_words("ham").should == "ham"
end

it "handles a word with a single letter" do
  ordered_vowel_words("o").should == "o"
end

it "ignores the letter y" do
  ordered_vowel_words("tamely").should == "tamely"
end
4

2 に答える 2