累積

累積

初級

説明

accumulateという操作を実装してください。この操作は、コレクションと、その各要素に対して行う操作を受け取り、入力コレクションの各要素にその操作を適用した結果を収めた新しいコレクションを返します。

次の数値のコレクションがあるとします。

  • 1、2、3、4、5

そして、操作は次のとおりです。

  • 数値を2乗する(x => x * x)

書いたコードで、2乗した値のコレクションを生成できるようにしてください。

  • 1、4、9、16、25

期待される関数シグネチャは、テストスイートで確認してください。

制約

標準ライブラリが提供するcollect、map、fmap、その他もろもろの機能には手を出さないでください! 代わりに、ほかの基本的な道具を使って、自分で解いてみてください。

発展

汎用的なEnumerableのメソッドを定義するときは、ブロックが渡されなかった場合に備えて、#to_enumを呼ぶのが一般的です。

追加できるテストを次に示します。

def test_accumulate_when_block_is_deferred
  skip
  accumulate_enumerator = [1, 2, 3].accumulate
  accumulated_result = accumulate_enumerator.map do |number|
    number * number
  end
  assert_equal [1, 4, 9], accumulated_result
end
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Ruby Exercism

累積を始める準備はできましたか?

Exercismに登録すれば、21個のコンセプト121個の演習、そして本物の人間によるメンタリングとともに、Rubyを学んでマスターできます。すべて無料です。