【发布时间】:2015-02-27 18:09:21
【问题描述】:
我有几个大小相同的包含数字(矩阵)的数组,我想通过它们的索引(矩阵列)对它们进行求和。
例如,如果我有:
data = [[1, 2, 3, 4], [5, 6, 7, 8]]
我想得到结果:
column_totals = [6, 8, 10, 12]
我了解如何强制执行此操作,但我将如何使用函数式编程来执行此操作? (最好使用内置的 Enumerable 方法。)我对我提出的任何功能性解决方案都不是很满意。
我最终使用了 Matrix 类:
require 'matrix'
data = [[1, 2, 3, 4], [5, 6, 7, 8]]
matrix = Matrix[*data]
# Added sum method to Vector class.
matrix.column_vectors.map { |column| column.sum }
我对这个解决方案很满意,但我很沮丧,因为我无法在不依赖 Matrix 类的情况下围绕一个好的功能解决方案。
具体来说,我在转换这个步骤时被绊倒了:
data = [[1, 2, 3, 4], [5, 6, 7, 8]]
进入这个:
columns = [[1, 5], [2, 6], [3, 7], [4, 8]]
【问题讨论】:
-
根据我对函数式编程的了解(不多),我认为
Matrix方法的使用是正确的。
标签: ruby arrays functional-programming