[ create a new paste ] login | about

Link: http://codepad.org/lxtTT3B9    [ raw code | output | fork ]

Scheme, pasted on Nov 21:
(define (size m)
  (cons (length m)
        (length (car m))))

(define (size-row m)
  (car (size m)))

(define (vector-ref m n)
  (cond
    ((= n 0) (car m))
    (else (vector-ref (cdr m) (- n 1)))))

(define (row-vector m n)
  (vector-ref m (- n 1)))

(define (display-matrix m)
  (let ((r (size-row m)))
    (do ((i 1 (+ i 1)))
        ((> i r))
        (begin (display (row-vector m i))
               (newline)))))
;------------------------------------------------------
(require (lib "1.ss" "srfi"))
(define (accumulate-l-n op init seqs)
  (if (null? (car seqs))
      '()
      (cons (fold op (map car seqs) init)
            (accumulate-l-n op init (map cdr seqs)))))

(define (transpose mat)
  (accumulate-l-n cons '() mat))
;------------------------------------------------------
(define M '((1 2 3 4) (5 6 7 8) (9 0 1 2) (3 4 5 6))) 
(display-matrix M)
(newline)
(display-matrix (transpose M))


Output:
1
2
3
4
5
6
7
8
9
(1 2 3 4)
(5 6 7 8)
(9 0 1 2)
(3 4 5 6)

(1 5 9 3)
(2 6 0 4)
(3 7 1 5)
(4 8 2 6)


Create a new paste based on this one


Comments: