ВУЗ:
Составители:
Рубрика:
37
входящий в оба списка и NIL, если такого элемента нет.
Функция:
(define (FirstCoincidence L1 L2)
(cond
((null? L1) ;NIL – если первый список пуст
nil)
((member (car L1) L2) ;если первый элемент
первого
;списка входит во второй
(car L1)) ;возвращаем этот элемент
(t
;иначе – применяем функцию
к
;хвосту первого списка
(FirstCoincidence (cdr L1) L2)
)
)
)
Результат выполнения:
[0] (FirstCoincidence '(a b c d) '(f g c d))
C
[1] (FirstCoincidence '(a b c d) '(f g h i))
()
Определите функцию, преобразующую список в множество, то есть удаляющую
повторения
элемента в списке.
Функция:
(define (List2Set L)
(cond
((null? L)
;если список пуст – возвращаем NIL
nil)
((member (car L)(cdr L))
;если голова входит в хвост –
выкидываем голову и
;применяем List2Set к хвосту
(List2Set (cdr L)))
(t
;иначе – голова не повторяется в
хвосте.Оставляем
;ее в множестве и применяем List2Set к
хвосту
(cons (car L) (List2Set (cdr L))))
)
)
Результат выполнения:
[1] (List2Set '(a b c a b c a b c))
(A B C)
Определите предикат, проверяющий совпадение двух множеств (независимо от
порядка следования элементов).
Функция:
(define (SetEQ X Y)
(cond
((null? X)
(null? Y))
((member (car X) Y)
(SetEQ (cdr X) (delete! (car X) Y)))
(t nil)
)
37
входящий в оба списка и NIL, если такого элемента нет.
Функция:
(define (FirstCoincidence L1 L2)
(cond
((null? L1) ;NIL – если первый список пуст
nil)
((member (car L1) L2) ;если первый элемент
первого
;списка входит во второй
(car L1)) ;возвращаем этот элемент
(t
;иначе – применяем функцию
к
;хвосту первого списка
(FirstCoincidence (cdr L1) L2)
)
)
)
Результат выполнения:
[0] (FirstCoincidence '(a b c d) '(f g c d))
C
[1] (FirstCoincidence '(a b c d) '(f g h i))
()
Определите функцию, преобразующую список в множество, то есть удаляющую
повторения элемента в списке.
Функция:
(define (List2Set L)
(cond
((null? L)
;если список пуст – возвращаем NIL
nil)
((member (car L)(cdr L))
;если голова входит в хвост –
выкидываем голову и
;применяем List2Set к хвосту
(List2Set (cdr L)))
(t
;иначе – голова не повторяется в
хвосте.Оставляем
;ее в множестве и применяем List2Set к
хвосту
(cons (car L) (List2Set (cdr L))))
)
)
Результат выполнения:
[1] (List2Set '(a b c a b c a b c))
(A B C)
Определите предикат, проверяющий совпадение двух множеств (независимо от
порядка следования элементов).
Функция:
(define (SetEQ X Y)
(cond
((null? X)
(null? Y))
((member (car X) Y)
(SetEQ (cdr X) (delete! (car X) Y)))
(t nil)
)
Страницы
- « первая
- ‹ предыдущая
- …
- 35
- 36
- 37
- 38
- 39
- …
- следующая ›
- последняя »
