(define (create-polygon ptlist)
(if (null? ptlist) '()
(cons (cons (car ptlist) (cadr ptlist)) (create-polygon (cdr ptlist)))))
(define (newlist ptlist)
(append ptlist (car ptlist)))
(define test-points
(list p1 p2 p3 p4 p5 p6))
(create-polygon test-points)
我正在尝试制作多边形边缘坐标的列表。 p1,p2是一些像(0 0)的点。 最终结果应为((p1 p2)(p2 p3)(p3 p4)(p4 p5)(p5 p6)(p6 p1))。 我浪费了很多时间来试图弄清楚是什么给了我一个错误。为什么它会出错。我在这里做错了什么?
答案 0 :(得分:1)
这是我午休时的一些有趣的手指练习。
draw
我的override init() {
super.init()
backgroundColor = .red
tintColor = .blue
}
函数执行我认为您尝试使用Petite Chez Scheme Version 8.4
Copyright (c) 1985-2011 Cadence Research Systems
> (define test-points '(p1 p2 p3 p4 p5 p6))
> (define (rotate xs) (append (cdr xs) (list (car xs))))
> (define (create-polygon ptlist)
(map list ptlist (rotate ptlist)))
> (create-polygon test-points)
((p1 p2) (p2 p3) (p3 p4) (p4 p5) (p5 p6) (p6 p1))
函数执行的操作。在rotate
中,我使用newlist
高阶函数来执行递归操作。