diff --git a/3_16.rkt b/3_16.rkt index 77b71d1..5f16823 100644 --- a/3_16.rkt +++ b/3_16.rkt @@ -15,22 +15,16 @@ 1))) (define (count-unique-pairs l) - (define (adjoin p pairs) - (cond ((null? pairs) (list p)) - ((not (pair? p)) pairs) - ((eq? p (car pairs)) pairs) - (else (cons (car pairs) - (adjoin p (cdr pairs)))))) (trace-define (count l seen-pairs) (cond ((not (pair? l)) 0) ((memq l seen-pairs) 0) (else (+ (count (car l) - (adjoin l seen-pairs)) + (cons l seen-pairs)) (count (cdr l) - (adjoin l - (adjoin (car l) - seen-pairs))) + (cons l + (cons (car l) + seen-pairs))) 1)))) (count l '()))