Мне нужно написать программу для классов эквивалентности и получить эти выходные ...Классы эквивалентности LISP
(equiv '((a b) (a c) (d e) (e f) (c g) (g h)))
=> ((a b c g h) (d e f))
(equiv '((a b) (c d) (e f) (f g) (a e)))
=> ((a b e f g) (c d))
В принципе, набор представляет собой список, в котором порядок не имеет значения, но элементы не появляются не один раз. Функция должна принимать список пар (элементы, которые связаны в соответствии с некоторым отношением эквивалентности) и возвращать набор классов эквивалентности без использования операторов итерации или присваивания (например, do
, set!
и т. Д.).
Однако набор утилит, таких как set-intersection
, set-union
и функция, которая устраняет дубликаты в списке и встроенные функции union
, intersection
и remove-duplicates
допускаются.
Большое спасибо!
Кстати, это не вопрос о домашнем задании. Мой друг нуждается в этом фрагменте кода, чтобы решить смешные вопросы.
Вы можете пометить это в качестве домашнего задания, если это домашнее задание? Если да, вы получите более подходящие ответы. –
Звучит как домашнее задание для меня ... –
Нет, это не домашнее задание. – bubdada