Я пытаюсь переместить заглавные слова перед началом предложения. Я ожидаю, что получится:Метод для заглавных букв
capsort(["a", "This", "test.", "Is"])
#=> ["This", "Is", "a", "test."]
capsort(["to", "return", "I" , "something", "Want", "It", "like", "this."])
#=> ["I", "Want", "It", "to", "return", "something", "like", "this."]
Ключом является поддержание порядка слов.
Я чувствую, что я очень близко.
def capsort(words)
array_cap = []
array_lowcase = []
words.each { |x| x.start_with? ~/[A-Z]/ ? array_cap.push(x) : array_lowcase.push(x) }
words= array_cap << array_lowcase
end
Любопытно узнать, какие еще могут быть другие элегантные решения.
Что делать, если вы используете простой вид? '[" a "," This "," test. "," Is "]. sort' returns' => ["Is", "This", "a", "test."] ' – Aguardientico
Что вы хотите 'caport' вернуться для вашего примера? Пожалуйста, отредактируйте, чтобы добавить это. '' string "' не лучшее имя для массива. –
Ваш метод просто делает ['Enumerable # partition'] (http://ruby-doc.org/core-2.3.0/Enumerable.html#method-i-partition) трудным путем. Бросьте в 'Array # flatten', и все готово. –