所以我正在尝试构建一个函数,在该函数中,它根据输入的维度在板上创建一个位置列表。
(定义(创建板尺寸)...)
其中维度是1到9之间的数字。
因此,输出将是一个电路板位置列表列表,其中电路板位置为2位数字,第一个数字是行号,第二个是列号。
示例:
(创建板3) - > (清单11 12 13)(清单21 22 23)(清单31 32 33)))
此外,这应该是在没有递归或辅助函数的情况下完成的,只有抽象列表函数。
答案 0 :(得分:1)
在Racket中,使用iterations and comprehensions是一个非常惯用的解决方案:
(define (create-board dim)
(for/list ([i (in-range 1 (add1 dim))])
(for/list ([j (in-range 1 (add1 dim))])
(+ (* 10 i) j))))
或者,仅使用基本列表程序:
(define (create-board dim)
(map (lambda (i)
(map (lambda (j)
(+ (* 10 i) j))
(build-list dim add1)))
(build-list dim add1)))
例如:
(create-board 3)
=> '((11 12 13) (21 22 23) (31 32 33))