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

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

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

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

Q&A

解決済

3回答

1696閲覧

Ruby 配列の要素同士をかけあわせる

RITA

総合スコア18

Ruby

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

0グッド

0クリップ

投稿2017/09/06 09:36

配列同士で同じ位置の要素をかけ合わせ、合計を求めたいです。
1のような配列が1つずつある場合は問題ないのですが、
2のように配列が複数あるときどのようなコードが考えられるでしょうか。

初歩的なことで恐縮ですが、回答お願い致します。

#1. pointとnumberの位置の同じ各要素をかけ合わせ、その合計を求める(ex. 1x2,2x4,3x6....)
point =[1,2,3,4,5]
number =[2,4,6,8,10]
i =0
result =0

while i <=4
result += point[i]*number[i]
i+=1
end
puts result

#2. pointとnumberの位置の同じ各要素をかけ合わせ、その合計を求める。numberが複数の配列を要素としてを持つ場合。(ex.1x2,2x4,3x6....+ 1x1,2x3,3x5...)
point =[1,2,3,4,5]
number =[[2,4,6,8,10],[1,3,5,7,11]]

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

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

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

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

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

guest

回答3

0

ベストアンサー

1.

Ruby

1number.zip(point).map{|n,p| n*p}.sum

2.
ちょっと求められている物が読み取れませんでした。

Ruby

1number.map{|nn| nn.zip(point).map{|n,p| n*p}.sum} 2か、 3number.map{|nn| nn.zip(point).map{|n,p| n*p}.sum}.sum

sumは、Ruby2.4の新機能なので、2.3以前だと、inject(:+)で。

行列ライブラリを使うと掛け算でいいかと思いましたが、見た目がいまいちでした。
1.

Ruby

1require "matrix" 2p (Matrix.row_vector(point) * Matrix.column_vector(number) )[0,0]

投稿2017/09/06 12:45

otn

総合スコア84533

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

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

0

1

Ruby

1p point.zip(number).reduce(0) { |s, e| s += e.reduce(:*) }

2

Ruby

1p (number << point).transpose.reduce(0) { |s, e| s + e.reduce(:*) }

投稿2017/09/06 11:00

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

1

number.zip(point){|n,p| n*p}.reduce(:+)

2

numbers.map{|number| number.zip(point){|n,p| n*p}.reduce(:+)}

動かしていないけど、こんな感じ。

投稿2017/09/06 09:54

編集2017/09/06 09:58
kiichi54321

総合スコア1984

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問