"Плохое значение для диапазона" - не удается решить

Так что смысл этого кода в том, чтобы перевести латинский язык свиньи (и, видимо, "u" не считается гласным)... это было для упражнения. Я попытался изменить значения циклов for для загрузки, а затем попробовал другие операторы if / else. Я rspec'ing функции с важной частью

describe "#translate" do
  it "translates many words" do
    s = translate("the quick brown fox")
    expect(s).to eq("ethay ickquay ownbray oxfay")
  end
end

и мне жаль, что я почти забыл упомянуть, как ошибка появляется. Если верхний абзац не имеет смысла... мой плохой, забыл упомянуть код, который проблематичен, прошёл

'#' Метод для ввода с пробелами

и сообщение об ошибке, которое появляется для этого rspec

2) #translate translates many words
     Failure/Error: s = translate("the quick brown fox")
     ArgumentError:
       bad value for range
     # ./pig_latin.rb:25:in `translate'
     # ./pig_latin_spec.rb:64:in `block (2 levels) in <top (required)>'

Я новичок в этом и не читал много вопросов (в основном просто смотрю на решения), так что извините, моя точка зрения встречается довольно размыто

#write your code here
def translate input
    vowels = ["a", "e", "i", "o"]
    output = input.split("")
    if (output.include?(" ") == false)
    i = 0
    #Method for inputs with no spaces
    while (i == 0) 
      #First Letter is not a vowel
      if ((vowels.include?(output[i])) == false)
          output.insert((output.length - 1), output.delete_at(i))

      else
         #Is a vowel
          output = output.join + "ay"
          i += 1
          break
      end
    end


  #Method for inputs with spaces
  else
      output = output.join.split
      for i in i..(output.length - 1)
      output[i] = output[i].split("")
        for x in x..10
          if ((vowels.include?(output[i][x])) == false)
            output[i].insert((output[i].length - 1), output[i].delete_at(x))
          else
            output[i] = output[i].join + "ay"
            i += 1
            break
          end
        end
      end
    output = output.join(" ")
    end 
    return output
end 

0 ответов

Другие вопросы по тегам