-2

フィルターと整数のみを使用して、リストから完全な正方形を削除するコードをどのように記述しますか? これはスキームに組み込まれていると私は信じています。例えば。(take-out-perfect-squares '(1 2 9 16 5 64)) は (2 5) を返す必要があります。これは、そのリスト内の他のすべての平方根が整数を返すためです。ありがとう!

4

2 に答える 2

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)
于 2012-07-23T17:27:23.600 に答える
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))))))
于 2012-07-24T01:50:25.587 に答える