0

私はこれを理解しようと数週間試みてきましたが、完全に困惑しています。

item_id's:を表す配列があります[2, 4, 5, 6, 2, 3]

各アイテムが表示される回数を表す別の配列があります: [1, 1, 3, 3, 2, 5].

すべての項目が完了したことを確認したいので、 の総数を含む配列を作成したいと思いますitem_id。その配列を、ユーザーが各項目を完了すると作成される完了項目配列と比較します。したがって、上記の例から、作成しようとしている配列は次のようになります。

[2, 4, 5, 5, 5, 6, 6, 6, 2, 2, 3, 3, 3, 3, 3]

編集:

私はワークアウト アプリを作成しているので、ユーザーは多くのエクササイズを含むワークアウトを持っています。各エクササイズには、1 つまたは複数のセットが関連付けられています。ユーザーは、そのエクササイズのすべてのセットを完了したときにエクササイズを完了し、そのワークアウトのすべてのエクササイズを完了したときにワークアウトを完了します。この質問では、ユーザーがワークアウトをいつ終了したかを判断しようとしています。

編集2:

複数正解できたらいいな!みんな、ありがとう!

4

4 に答える 4

5

OK、@sameera207が1つの方法を提案したので、別の方法を提案します(機能的なスタイル):

arr1 = [2, 4, 5, 6, 2, 3]
arr2 = [1, 1, 3, 3, 2, 5]

arr1.zip(arr2).flat_map { |n1, n2| [n1] * n2 }
于 2013-05-17T03:47:22.037 に答える
1

これはそれを行う1つの方法です:

a = [2,4,5,6,2,3]
b = [1,1,3,3,2,5]
c = []

a.each.with_index do |index, i|
  b[index].to_i.times {c << i }
end
p c
于 2013-05-17T03:42:23.647 に答える
1
ids = [2, 4, 5, 6, 2, 3]
repeats = [1, 1, 3, 3, 2, 5]

result = []
ids.count.times do |j|
  repeats[j].times { result << ids[j] }
end
于 2013-05-17T03:45:43.940 に答える