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

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

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

Elixirは、並列処理や関数型に特化した、Erlang VM (BEAM) 上で動作する汎用プログラミング言語です。分散システム、耐障害性、ソフトリアルタイムシステムなどの機能を持ちます。

Q&A

解決済

1回答

1925閲覧

elixir 複数のリストから同じインデックスの要素を引き取りたい

marny

総合スコア19

Elixir

Elixirは、並列処理や関数型に特化した、Erlang VM (BEAM) 上で動作する汎用プログラミング言語です。分散システム、耐障害性、ソフトリアルタイムシステムなどの機能を持ちます。

0グッド

0クリップ

投稿2020/01/08 05:26

いつもお世話になっております.
elixirで複数のリストを引き取って,それらのn番目のインデックスの要素すべてを引き取って関数に渡す方法はありますでしょうか.例えば足し算をするなら,list1 = [1,3,5]とlist2 = [2,4,6]を足し算して[3,7,11]のようにする感じです
下に書いたのは間違いですがこうしたいというイメージです.

Elixir

1defmodule TwoLists do 2 def sum(list1,list2) do 3 Enum.map(list1,list2,fn(a,b)->a+b end) 4 end 5end 6 7iex> list1 = [1,3,5] 8iex> list2 = [2,4,6] 9iex> TwoLists.(list1,list2) 10#-->Enum.map/3 is undefined error 11

Enum.at/2を使えばできなくもない気はするのですが,綺麗な書き方があれば教えていただきたいです.
よろしくお願いいたします.

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

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

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

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

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

guest

回答1

0

自己解決

Elixir

1def MultiList(list1,list2) do 2 Enum.map(0..length(list1)-1,fn(n)-> 3 Enum.at(list1,n) + Enum.at(list2,n) 4 end) 5end

で一応できました.
他にもっと良い書き方がありましたら教えていただきけると嬉しいです.

----------追記------------

Elixir

1defmodule MultiList do 2 def sum(list1, list2, total \ []) 3 4 def sum([], [], total) do 5 Enum.reverse(total) 6 end 7 8 def sum([h1 | t1], [], total) do 9 sum(t1, [], [h1 | total]) 10 end 11 12 def sum([], [h2 | t2], total) do 13 sum([], t2, [h2 | total]) 14 end 15 16 def sum([h1 | t1], [h2 | t2], total) do 17 sum(t1, t2, [h1 + h2 | total]) 18 end 19end

Elixir Forumにて、リストの長さが異なる場合にも対応した解決策を答えてもらったので追記します.

投稿2020/01/08 08:32

編集2020/01/09 05:42
marny

総合スコア19

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問