一つのアプローチ:
def check_only_last_upcase(arr)
return false if arr.empty?
arr.each_with_index do |word, index|
return false if word == word.upcase && index != (arr.length-1)
end
(arr.last.upcase == arr.last)
end
puts check_only_last_upcase(["word", "wOrD", "WORD"]) #true
puts check_only_last_upcase(["WORD", "wOrD", "WORD"]) #false
puts check_only_last_upcase(["word", "wOrD", "word"]) #false
puts check_only_last_upcase(["word"]) #false
puts check_only_last_upcase(["WORD"]) #true
puts check_only_last_upcase([]) #false
別の方法(より多くのルビーの方法のように見える?):
def check_only_last_upcase(arr)
arr.last == arr.last.upcase &&
arr
.slice(0,arr.length-1)
.all? { |word| word.upcase != word }
end
最終提案がarr
場合は戻りませんarr
は(常に少なくとも一つのアイテムを持っていると仮定しあなたが指摘したように、空です)。
"[ask]"と "[mcve]"をお読みください。私たちはそれを修正できるようにあなたの試みを見たいと思います。要件のリストを私たちに与えただけなので、コードを記述したいようです。 –
"大文字のみ"は単語の最初の文字のみを参照するため、 "大文字のみを含む"などの単語に "大文字の"を置き換えることができます。 –