在方案中翻译矩阵

时间:2015-11-18 18:30:49

标签: matrix scheme translate

无法翻译输入为两个列表的矩阵,输出将是第二个列表添加到每个列表,例如:

(translate '((1 2 3)(4 5 6)(7 8 9)) '(10 20 30))
; -> ((11 22 33) (14 25 36) (17 28 39))

我目前有:

(define (translate matrix1 matrix2)
    (if (list? (car matrix1))
        (append '() (map + (car matrix1) matrix2)) 
        (translate (cdr matrix1) matrix2)))

我认为每次递归调用一个空列表时,这将继续附加matrix1的每辆车,但我只是得到了我的第一个'行'输出。

非常感谢任何输入!

1 个答案:

答案 0 :(得分:4)

这就像

一样简单
(define (translate matrix1 matrix2)
  (map (lambda (lst) (map + lst matrix2)) matrix1))

测试

> (translate '((1 2 3)(4 5 6)(7 8 9)) '(10 20 30))
'((11 22 33) (14 25 36) (17 28 39))