-3

#lang 球拍

(define(rectangleList list rectangle1)(recursion list rectangle1'()))
;(define rectangleList(list '(2 4 6 1)'(1 8 4 4)'(0 5 4 0)))
;(define rectangle1 '(1 3 5 2))

(define(recursion rectangleList rectangle1 returnedList)
 (if(<(length rectangleList)1)
   returnedList

 (recursion(cdr rectangleList) rectangle1
  (if(Intersect(car rectangleList)rectangle1)
    (cons (car rectangleList) returnedList)
    returnedList
    )
 )

) )

(define(Intersect rectangleList rectangle1)
 (and(and(<(car rectangleList) (cadr rectangle1)))
      (and(> (cadr rectangleList) (car rectangle1)))
      (and(< (cdr rectangleList)(caddr rectangle1)))
      (and(> (caddr rectangleList) (cdr rectangle1)))))

我在调用我的球拍代码时遇到问题。我不确定如何进行。该代码获取一个矩形列表,然后还获取一个矩形并查看奇异矩形是否与列表中的任何其他矩形相交。然后它应该输出与它相交的矩形列表,即测试用例

问题陈述:给定一个矩形 R 和一个矩形列表 L,返回包含 L 中与 R 相交的元素的列表。

对此事的任何帮助将不胜感激!:)

4

1 回答 1

0
#lang racket

(define(rectangleList list rectangle1)(recursion list rectangle1'()))
;(define rectangleList(list '(2 4 6 1)'(1 8 4 4)'(0 5 4 0)))
;(define rectangle1 '(1 3 5 2))

;Recusion function
(define(recursion rectangleList rectangle1 returnedList)
  (if(<(length rectangleList)1)
    returnedList

 (recursion(cdr rectangleList) rectangle1
  (if(Intersect(car rectangleList)rectangle1)
    (cons (car rectangleList) returnedList)
    returnedList
    )
 )

) )

;Intersect function      
 (define(Intersect rectangleList rectangle1)
  ;R1.topx<R2.bottomx
   (and(and(< (list-ref rectangleList 0) (list-ref rectangle1 2)))
      ;R1.bottomx>R2.topx
      (and(> (list-ref rectangleList 2) (list-ref rectangle1 0)))
      ;R1.bottomy<R2.topy
      (and(< (list-ref rectangleList 3)(list-ref rectangle1 1)))
      ;R1.topy>R2.bottomy
      (and(> (list-ref rectangleList 1) (list-ref rectangle1 3)))))

您通过以下方式调用它:

(矩形列表('(1 1 4 5)'(1 3 5 6))'(1 3 5 7))

于 2021-11-13T21:47:38.507 回答