向量变换中的方案/球拍向量

Tim*_*925 2 scheme vector racket

我在转换矢量时遇到问题,如下所示:

#(#(1 2 3)#(1 2 3)#(1 2 3)#(1 2 3)#(1 2 3)))
Run Code Online (Sandbox Code Playgroud)

变成这样的一个:

#(#(1 1 1 1 1) #(2 2 2 2 2) #(3 3 3 3 3))
Run Code Online (Sandbox Code Playgroud)

我写了一段测试代码,但输出是错误的。我进入调试器,我想我知道哪一行代码导致了问题。我似乎无法找到让它发挥作用的方法。任何帮助是极大的赞赏。

(define (test)
  (let* ((table #(#(1 2 3)#(1 2 3)#(1 2 3)#(1 2 3)#(1 2 3)))
         (counter 5)
         (size 3)
         (new-table (make-vector size (make-vector counter #f))))

    (let loop ((sc 0)
               (cc 0))
      (when (not (= cc counter))
        (if (not (= sc size))
            (begin (vector-set! (vector-ref new-table sc) cc (vector-ref (vector-ref table cc) sc))
                   (loop (+ 1 sc) cc))
            (loop 0 (+ 1 cc)))))
    (display new-table))) 

> (test)
#(#(3 3 3 3 3) #(3 3 3 3 3) #(3 3 3 3 3))
Run Code Online (Sandbox Code Playgroud)

Ank*_*kur 6

您还可以使用vector-map来获得所需的输出:

(define table #(#(1 2 3) #(1 2 3) #(1 2 3) #(1 2 3) #(1 2 3)))

(apply vector-map vector (vector->list table))
Run Code Online (Sandbox Code Playgroud)