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

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

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

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

Q&A

解決済

1回答

261閲覧

特殊な条件で配列から要素を抽出したい

kirara501

総合スコア8

Ruby

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

0グッド

0クリップ

投稿2018/03/05 12:20

編集2018/03/05 14:13

配列グループA
["2018/02/18","2018/02/19","2018/02/20","2018/02/24"]
["2018/02/18","2018/02/19","2018/02/20",2018/03/1"]

配列グループB
["2018/02/18","2018/02/19","2018/03/05"]
["2018/02/22","2018/02/19"]
["2018/02/18","2018/02/23"]

が存在した時、以下の条件で要素を抽出できるようにしたいです。
1、グループAの全員が空いている
2、1の中でグループBの中に空いている人が最も多い
3、2の条件で複数該当する日にちがある場合は、最も早い日付けを抽出

今回の場合Aの中で全員が空いているのは2/18と2/19と2/20であり、その3日程うちBの中に空いている人が最も多いのは2/18と2/19なので、そのうち最も早い2018/02/18を抽出出来るようにしたいです。

どうすれば実現可能でしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんな感じ。

Ruby

1gr_a = [ 2["banana","orange","apple"], 3["banana","orange","grape"], 4] 5 6gr_b = [ 7["banana","orange","apple"], 8["grape","peach"], 9["banana","peach"], 10] 11 12p gr_a.inject(&:&).max_by{|x| gr_b.select{|y| y.include?(x)}.size}

#修正後の問題

Ruby

1require "date" 2 3gr_a = [ 4["2018/02/18","2018/02/19","2018/02/20","2018/02/24"], 5["2018/02/18","2018/02/19","2018/02/20","2018/03/1"], 6] 7 8gr_b = [ 9["2018/02/18","2018/02/19","2018/03/05"], 10["2018/02/22","2018/02/19"], 11["2018/02/18","2018/02/23"] , 12] 13 14p gr_a.inject(&:&).sort_by{|x| [-gr_b.select{|y| y.include? x}.size,Date.parse(x)]}.first

投稿2018/03/05 12:35

編集2018/03/05 14:41
otn

総合スコア84423

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

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

kirara501

2018/03/05 14:14

大変申し訳無いのですが条件が少し変わったので質問を編集しました。 よろしければもう一度回答していただけると有り難いです。 よろしくお願い致します
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問