Scheme在矩阵中添加列

时间:2015-10-10 01:05:48

标签: matrix scheme racket

我正在尝试编写一个带矩阵(表示为列表列表)的函数,并在列中添加元素并返回一个向量(表示为列表):

示例:

    (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))

1 个答案:

答案 0 :(得分:3)

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

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

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

说明:map可以将多个列表作为参数。如果我们apply将其sample(列表列表)并传递+作为执行映射的过程,则会依次从每个列表中获取一个元素并添加它们,生成一个包含结果的列表 - 有效地,添加矩阵中的所有列。