ฟังก์ชันควรรับรายการจำนวนเต็มและส่งคืนรายการที่มีรายการย่อยสองรายการ รายการแรกประกอบด้วยเลขคู่จากรายการเดิม รายการที่สองประกอบด้วยเลขคี่ รหัสของฉันทำงานได้สำเร็จ แต่ถ้าฉันทดสอบด้วยจำนวนเต็มลบ เช่น -5 ในการทดสอบครั้งที่สอง รหัสของฉันก็จะไม่สนใจมันเลย มีความคิดเห็นเกี่ยวกับวิธีการแก้ไขหรือไม่?
(หมายเหตุด้านข้าง - ฉันรู้ว่ามีฟังก์ชันสำหรับเลขคู่ คี่ ฯลฯ แต่สำหรับงานมอบหมายนี้ ฉันจะสร้างมันขึ้นมาเอง)
(define (segregate lst)
(list(pullEven lst)(pullOdd lst)))
(define (pullEven lst)
(if (empty? lst)
'()
(if (isEven (first lst))
(cons (first lst) (pullEven (rest lst)))
(pullEven (rest lst)))))
(define (pullOdd lst)
(if (empty? lst)
'()
(if (isOdd (first lst))
(cons (first lst) (pullOdd (rest lst)))
(pullOdd (rest lst)))))
(define (isEven x)
(if (equal? (remainder x 2) 0) #t #f)
)
(define (isOdd x)
(if (equal? (remainder x 2) 1) #t #f)
)
;tests
"---------------------------------------------"
"Segregate Tests"
(segregate '(7 2 3 5 8))
(segregate '(3 -5 8 16 99))
(segregate '())
"---------------------------------------------"
partition
? - person Alex Knauth   schedule 03.10.2017