Я хочу создать функцию, которая принимает в качестве параметров два списка и возвращает #t
, если они пересекаются (имеют какие-либо общие элементы).Пересечение списков в racket
(define member?
(lambda (a lat)
(cond
((null? lat) #f)
(else (or (equal? (car lat) a)
(member? a (cdr lat)))))))
(define intersect
(lambda (set1 set2)
(cond
((null? set1)(quote()))
((member? (car set1) set2)
(cons (car set1)
(intersect (cdr set1) set2)))
(else (intersect (cdr set1) set2)))))
(intersect '(1 2) '(2 4)) ;
Ваш вопрос задает две строки, но ответ, который вы приняли, похоже, касается пересечения двух списков - и, по крайней мере, в мире за пределами Racket, строки и списки - это совсем другие типы. Вы уверены, что ваш вопрос, как изначально написанный, был правильным, ссылаясь на строки? Я сделал заголовок более значимым; исправьте его, если «строками» должны быть «списки». –
@JonathanLeffler Поскольку вы редактировали, я думаю, вы действительно посмотрели предыдущие версии, в которых был фактический код? Я бы сказал, что это была более сложная теория, чем геометрия. – Sylwester
@Sylwester: нет, я раньше не смотрел историю изменений. Интересно, почему код был удален. Это значительно снижает качество вопроса. Я согласен, что это списки, а не строки. Я действительно задавался вопросом, как ответы вывели то, что требовалось; Теперь я вижу. Я буду повторно редактировать, восстанавливая код и меняя строку в списке. –