Replace custom adjoin with cons

Duplicates in the seen list don't matter
This commit is contained in:
Oliver Payne 2022-05-03 18:58:21 +01:00
parent 8cbd5f4788
commit 275fb36bd7
1 changed files with 4 additions and 10 deletions

View File

@ -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 '()))