方案:如何将带有cons的列表更改为向量?

时间:2011-01-02 16:06:51

标签: scheme racket

如何将使用cons制作的列表更改为矢量?

((p b p b p b p b)
 (b p b p b p b p)
 (p b p b p b p b)
 (b p b p b p b p)
 (p b p b p b p b)
 (b p b p b p b p)
 (p b p b p b p b)
 (b p b p b p b p))

这是我的代码:

(define b "black")
(define w "white")

(define (board)
  (letrec ((ti
            (lambda (x)
          (if (eq? x 8) '()
          (cons (lh x 0) (ti (+ 1 x))))))
       (lh
        (lambda (x y)
          (if (eq? y 8) '()
          (cons (if (odd? (+ x y)) 'b 'w) (lh x (+ 1 y)))))))
    (ti 0)))

2 个答案:

答案 0 :(得分:5)

使用整个列表中的list->vector功能,然后使用vector-map在每个子列表上使用。

或者首先使用maplist->vector应用于每个子列表,然后在整个列表中使用list->vector

答案 1 :(得分:0)

这是你在想什么?

#(#(p b p b p b p b)
  #(b p b p b p b p)
  #(p b p b p b p b)
  #(b p b p b p b p)
  #(p b p b p b p b)
  #(b p b p b p b p)
  #(p b p b p b p b)
  #(b p b p b p b p))