0

n 個の要素を持つリストを作成し、それらのリストのそれぞれに r 個の要素を持たせようとしています。つまり (function 2 3)そうなるでしょう(list (list 0 0 0)(list 0 1 2))。そして、これらの要素は、n 番目の要素に 0 から始まる r 番目の要素を掛けることによって作成されます。これが私のコードです。

(define (nr nc)     
  (build-list nr (lambda (x) 
                   (build-list nc (lambda (x) (* x 1))))))

最初のリストに(function 2 3)0、2(list (list 0 1 2)(list 0 1 2))番目に 1、3 番目に 2 などを掛ける方法がわかりません。

4

2 に答える 2

1

あなたは近かった:

(define (build nr nc)     
  (build-list nr (lambda (r) 
                   (build-list nc (lambda (c) (* r c))))))

> (build 2 3)
'((0 0 0) (0 1 2))

> (build 3 3)
'((0 0 0) (0 1 2) (0 2 4))

別の方法:

(define (build2 nr nc)
  (for/list ([r nr])
    (for/list ([c nc])
      (* r c))))
于 2013-01-19T09:07:05.390 に答える
0
(define (range n)
  (define (range-iter i accum)
    (if (= i 0) (cons 0 accum)
        (range-iter (- i 1) (cons i accum))))
  (range-iter (- n 1) `()))

(define (nested-list n r)
  (map 
   (lambda (multiplier) 
     (map 
      (lambda (cell) (* cell multiplier)) 
      (range r))) 
   (range n)))
于 2013-01-19T08:09:26.013 に答える