2012-07-23 58 views
-2

你会如何编写一个代码,只使用过滤器和整数从列表中删除完美的正方形?我相信这是建立在计划中的。例如。 (1 2 9 16 5 64)应该返回(2 5),因为该列表中其他所有内容的平方根都会返回一个整数。谢谢!拿出完美的正方形

回答

0
(define (take-out-perfect-squares l) 
    (cond ((null? l) '()) 
     ((integer? (sqrt (car l))) 
     (take-out-perfect-squares (cdr l))) 
     (else 
     (cons (car l) (take-out-perfect-squares (cdr l)))))) 
2
(define remove-perfect-square-helper 
    (lambda (x y) 
    (if (null? x) 
     (reverse y) 
    (if (integer? (sqrt (car x))) 
     (remove-perfect-square-helper (cdr x) y) 
     (remove-perfect-square-helper (cdr x) (cons (car x) y)))))) 

(define remove-perfect-square 
     (lambda (x) 
      (remove-perfect-square-helper x '()))) 


(define x '(1 2 9 16 5 64)) 

(remove-perfect-square x)