質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

3回答

1647閲覧

Rubyで配列の要素の余りを合計するメソッドを作りたいです。

ji46ksi

総合スコア2

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2020/07/05 06:55

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

なのですが、実行しようとすると、実行出来ません、というエラーが表示されます。どこが間違っているのでしょうか?
初心者なので見つけられません。よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/07/05 07:13

> 実行出来ません、というエラーが表示されます。 正確なエラーメッセージを書いていただけますか?
ji46ksi

2020/07/05 07:22

メソッド 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という学習サイト上で書いたものなので変なエラーになっているかもしれません。
maisumakun

2020/07/05 07:23

メソッドの名前はmod_sumなのですか、addなのですか?
ji46ksi

2020/07/05 07:26

一応問題文のうえではmod_sumで書けということになっていました。addでも試したのですが、やはり同じエラーで失敗しました。
maisumakun

2020/07/05 07:28

問題出題側で回答すべき形と書いたコードが合っていない、ような状況にも思えます。
otn

2020/07/05 07:53

エラーメッセージと、コードがマッチしてませんので、自分が何をやっているのか理解できていない状態のようです。 実行したコードのそのままと、それを実行して表示されたそのままを、手を加えずにそのまま質問文を編集してコピペしましょう。
ji46ksi

2020/07/05 08:36

CODEPREPというサイト上で出題さている問題の一つでして、自分はメソッドだけ書いて、その他の作業は全てサイト側がしてくれています。なので、ここに書いてあるものは全てそのままの状態です(文がわかりにくくてすみません)。 mapを使って書き直したら無事にクリアすることが出来ました。ご回答、ありがとうございました。
gouf

2020/07/08 12:14

解決した場合、他者の回答ないし自己回答として内容をまとめて それをベストアンサーに設定することで、この質問を解決済みにすることができます
ji46ksi

2020/07/08 14:48

すみませんありがとうございます。
guest

回答3

0

自己解決

sum=0

def mod_sum(array, n)

array.map(|i| sum+=i%n)

return sum

end

としました。

投稿2020/07/08 14:50

ji46ksi

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

同じような動作として、次のように書くことができるかもしれません

ruby

1def mod_sum(array, n) 2 array.map { |x| x.modulo(n) } 3 .sum 4end 5 6puts mod_sum([3, 3, 2], 2) # => 2

なにか参考になれば幸いです。

投稿2020/07/08 12:21

gouf

総合スコア2321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自分が試した限りは、特に問題なく動作します(paiza.io)。

ということで、問題はメソッドを呼ぶ部分や書く位置、処理系側など、質問に書かれていない部分にあると思われます。

投稿2020/07/05 07:15

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ji46ksi

2020/07/05 07:24

ご回答ありがとうごさいます。CODEPREPという学習サイト上で書いたものなのでもしかしたらそちら側に問題があったのかもしれないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問