2017-10-27 6 views
0
(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)이어야합니다. 나는이 일에 너무 많은 시간을 낭비하여 내게 오류를주는 것을 알아 냈습니다. 왜 잘못하고있는거야? 여기서 내가 뭘 잘못하고 있니?스키마 목록 조작 오류

+1

어떤 오류를 말하는지 확인할 수 있습니다. –

답변

1

점심 시간에 약간 재미있는 손가락 운동이었습니다.

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 기능을 수행하려고했던 생각한다. create-polygon에서 나는 재귀로 수행 한 작업을 수행하기 위해 map higher-order 함수를 사용했습니다.