【问题标题】:Scheme add columns in a matrix方案在矩阵中添加列
【发布时间】:2015-10-10 01:05:47
【问题描述】:

我正在尝试编写一个函数,该函数采用矩阵(表示为列表)并将元素向下添加列并返回向量(表示为列表):

例子:

    (define sample
      '((2 6 0 4)
        (7 5 1 4)
        (6 0 2 2)))

应该返回'(15 11 3 10)

我试图使用(list-ref) 函数两次来获取每列的第一个元素,但没有成功。我正在尝试类似:

(map (lambda (matrix) ((list-ref (list-ref matrix 0) 0)) (+ matrix))

【问题讨论】:

标签: matrix scheme racket


【解决方案1】:

如果我们忘记索引并考虑高阶过程,解决方案很简单,试试这个:

(define sample
  '((2 6 0 4)
    (7 5 1 4)
    (6 0 2 2)))

(apply map + sample)
=> '(15 11 3 10)

解释:map 可以接受多个列表作为参数。如果我们将apply 它传递给sample(这是一个列表的列表)并传递+ 作为进行映射的过程,它将依次从每个列表中获取一个元素并添加它们,生成一个列表结果 - 有效地添加矩阵中的所有列。

【讨论】:

  • 非常感谢您的帮助。能够根据我的需要重复使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-10
  • 2015-11-04
  • 1970-01-01
  • 2021-05-11
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多