Как получить доступ к индексу в 2d списке и изменить его значение в схеме / ракетке? - PullRequest
1 голос
/ 04 апреля 2019

enter image description here У меня есть следующий пустой список (пустой в том смысле, что все инициализировано в тире)

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

И я хочу получить доступ к определенному индексу в этом списке (скажем, 0,1) и установить его, чтобы сказать 1

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

Как это можно сделать на схеме?

1 Ответ

3 голосов
/ 04 апреля 2019

В ракетке вы можете использовать for/list, чтобы накапливать результаты в виде списка.

e - это каждый элемент в row (списке), в то время как i, j отслеживают положение индексации в 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 -) (- - -) (- - -))
...