我有這樣的代碼方案:方案移調矩陣
(define transpose2 ;1
(lambda (A T) ;2
(if (pair? (car A)) ;3
(transpose2 ;4
(map cdr A) (cons (map car A) T) ;5
) ;6
(reverse T) ;7
) ;8
) ;9
) ;10
我聽不太懂系NR 5.如何在這條線最終導致變調給矩陣創建一對?
(define transpose ;1
(lambda (A) ;2
(transpose2 A `()) ;3
) ;4
) ;5
先前的功能transpose2此函數和執行。例如:
(display (transpose '((1 2) (3 4) (5 6))))
(display (transpose '((3 2 1) (2 1 1) (3 1 1))))
給出的結果:
((1 3 5) (2 4 6))
((3 2 3) (2 1 1) (1 1 1))
確定此代碼的工作?第3行特別使用了一個非常具體的條件,第7行似乎沒有包括最後一列。手工操作似乎是'(transpose2'((1 2)(3 4)(5 6)))''出來是'(1 3 4)',這是非常錯誤的... – Schism
是的,那個代碼作品。我用樣本結果編輯了我的代碼。 – user3669300
啊,我明白了。出於某種原因,我把'pair?'字面地對待,而不是像'cons?'/'list?'一樣。 – Schism