如何访问二维列表中的索引并在方案/球拍中更改其值?

时间:2019-04-04 03:17:19

标签: scheme racket

enter image description here我有以下空列表(在所有内容均初始化为破折号的意义上为空)

(((---)(---)(---))

我希望访问此列表中的特定索引(例如0,1)并将其设置为1

((-1-)(---)(---))

这如何在计划中完成?

1 个答案:

答案 0 :(得分:3)

在球拍中,您可以使用for/list将结果累积到一个列表中。

erow(列表)中的每个元素,而ij则跟踪l中的索引位置。

;; [Listof [Listof Any]] Nat Nat Any -> [Listof [Listof Any]]
;; changes the element at (`x`, `y`) position in `l` to `to`
(define (change-at l x y to)
  (for/list ([row l] [i (length l)])
    (for/list ([e row] [j (length row)])
      (if (and (= x i) (= y j))
          to
          e))))

(change-at '((- - -) (- - -) (- - -)) 0 1 1)
;; => '((- 1 -) (- - -) (- - -))