그냥 다시 계획의 스윙에려고 목록을 통과 (mhhmnmm를.) 방식은 재귀 적,
어쨌든 결정 #T 또는 #F를 반환하는 노력의 모든 요소 여부 목록은 고유합니다.첫 번째 요소와 두 번째 요소를 비교하면 문제가 없습니다. 반복적으로 계속있어 ..
(define (unique ls)
(if (null? ls) #t
(equal? (car ls)(car(cdr ls)))))
그냥 다시 계획의 스윙에려고 목록을 통과 (mhhmnmm를.) 방식은 재귀 적,
어쨌든 결정 #T 또는 #F를 반환하는 노력의 모든 요소 여부 목록은 고유합니다.첫 번째 요소와 두 번째 요소를 비교하면 문제가 없습니다. 반복적으로 계속있어 ..
(define (unique ls)
(if (null? ls) #t
(equal? (car ls)(car(cdr ls)))))
내가 루핑 보여줍니다 간단한 다른 기능을 쓸 것이다 . 바라건대 그 사이에 당신이 가지고있는 것, 당신은 거기에 도착할 것입니다. :-)
(define (member x lst)
(cond ((null? lst) #f)
((equal? x (car lst)) lst)
(else (member x (cdr lst)))))
또 다른 예 :
(define (assoc x alist)
(cond ((null? alist) #f)
((equal? x (caar alist)) (car alist))
(else (assoc x (cdr alist)))))
잘 (equal?)
호출이 완전하지 않습니다. 머리와 머리 꼬리가 인 경우이면 "고유"값은 false
입니다. 값이 같지 않으면 unique
값을 목록의 꼬리 (cdr)에 적용하여 반환합니다.
(그것은 당신이 미리 정렬 된 목록을 확인하고 당신의 프로토 구현 암시입니다. 그렇지 않다면, 그 걸릴 또 다른 단계입니다.)
(use srfi-1)
(define (unique? ls) (eq? (length ls) (length (delete-duplicates ls))))