Rubyで、配列の要素の余りを合計するメソッドを作りたいです。
具体的には、配列arrayと割る数nを引数にとり、arrayの各要素をnで割った合計値を返すメソッドmod_sumを作りたいです。自分の書いたコードは、
def mod_sum(array, n)
sum = 0
array.each do |i|
sum += i%n
end
return sum
end
なのですが、実行しようとすると、実行出来ません、というエラーが表示されます。どこが間違っているのでしょうか?
初心者なので見つけられません。よろしくお願い致します。
> 実行出来ません、というエラーが表示されます。
正確なエラーメッセージを書いていただけますか?
メソッド add([1, 2, 3, 4, 5],1) の実行に失敗しました。実装を見直してください。
/root/codecheck/main.rb:2:in `mod_sum'
test.rb:6:in `runTest'
test.rb:24:in `block in <main>'
test.rb:24:in `each'
test.rb:24:in `<main>'
メソッド add([1, 2, 3, 4, 5, 6],2) の実行に失敗しました。実装を見直してください。
/root/codecheck/main.rb:2:in `mod_sum'
test.rb:6:in `runTest'
test.rb:24:in `block in <main>'
test.rb:24:in `each'
test.rb:24:in `<main>'
メソッド add([100, 120, 10055, 102, 64, 23],10) の実行に失敗しました。実装を見直してください。
/root/codecheck/main.rb:2:in `mod_sum'
test.rb:6:in `runTest'
test.rb:24:in `block in <main>'
test.rb:24:in `each'
test.rb:24:in `<main>'
メソッド add([],111) の実行に失敗しました。実装を見直してください。
/root/codecheck/main.rb:2:in `mod_sum'
test.rb:6:in `runTest'
test.rb:24:in `block in <main>'
test.rb:24:in `each'
test.rb:24:in `<main>'
というエラーが表示されました。CODEPREPという学習サイト上で書いたものなので変なエラーになっているかもしれません。
メソッドの名前はmod_sumなのですか、addなのですか?
一応問題文のうえではmod_sumで書けということになっていました。addでも試したのですが、やはり同じエラーで失敗しました。
問題出題側で回答すべき形と書いたコードが合っていない、ような状況にも思えます。
エラーメッセージと、コードがマッチしてませんので、自分が何をやっているのか理解できていない状態のようです。
実行したコードのそのままと、それを実行して表示されたそのままを、手を加えずにそのまま質問文を編集してコピペしましょう。
CODEPREPというサイト上で出題さている問題の一つでして、自分はメソッドだけ書いて、その他の作業は全てサイト側がしてくれています。なので、ここに書いてあるものは全てそのままの状態です(文がわかりにくくてすみません)。
mapを使って書き直したら無事にクリアすることが出来ました。ご回答、ありがとうございました。
解決した場合、他者の回答ないし自己回答として内容をまとめて それをベストアンサーに設定することで、この質問を解決済みにすることができます
すみませんありがとうございます。
回答3件
あなたの回答
tips
プレビュー