Задачи на HashSet в Rust. Часть 6
Даны три множества:
let set1 = HashSet::from([1, 2, 3, 4, 5, 6]);
let set2 = HashSet::from([4, 5, 6, 7, 8, 9]);
let set3 = HashSet::from([6, 7, 8, 9, 10, 11]);
Найдите симметрическую разность всех трех множеств (элементы, которые есть только в одном из множеств).
Дана коллекция списков чисел:
let lists = vec![
vec![1, 2, 3, 4, 5],
vec![2, 3, 4, 5, 6],
vec![3, 4, 5, 6, 7],
vec![4, 5, 6, 7, 8]
];
Найдите множество чисел, которые являются общими для всех списков.
Даны две коллекции HashMap с вложенными множествами:
let map1 = HashMap::from([
("A", HashSet::from([1, 2, 3])),
("B", HashSet::from([3, 4, 5])),
("C", HashSet::from([5, 6, 7])),
]);
let map2 = HashMap::from([
("B", HashSet::from([3, 4, 8])),
("C", HashSet::from([5, 6, 9])),
("D", HashSet::from([7, 8, 9])),
]);
Для ключей, присутствующих в обеих коллекциях, найдите пересечение их множеств.
Дан список множеств:
let sets = vec![
HashSet::from([1, 2, 3, 4]),
HashSet::from([3, 4, 5, 6]),
HashSet::from([5, 6, 7, 8]),
HashSet::from([7, 8, 9, 10])
];
Найдите каскадное пересечение: элементы, которые есть в первом и втором, но нет в третьем и четвертом.
Дана коллекция HashMap, где значения - списки:
let data = HashMap::from([
("group1", vec![1, 2, 3, 4, 5]),
("group2", vec![3, 4, 5, 6, 7]), ("group3", vec![5, 6, 7, 8, 9]),
]);
Найдите множество чисел, которые встречаются ровно в двух группах.
Даны три множества строк:
let setA = HashSet::from(["apple", "banana", "cherry", "date"]);
let setB = HashSet::from(["banana", "date", "elderberry", "fig"]);
let setC = HashSet::from(["cherry", "date", "fig", "grape"]);
Найдите все строки, которые присутствуют ровно в двух множествах.
Дана коллекция множеств:
let numberSets = vec![
HashSet::from([1, 2, 3, 4, 5]),
HashSet::from([2, 3, 4, 5, 6]),
HashSet::from([3, 4, 5, 6, 7]),
HashSet::from([4, 5, 6, 7, 8])
];
Найдите множество чисел, которые отсутствуют хотя бы в одном из множеств.
Даны две коллекции HashMap с составными ключами:
let map1 = HashMap::from([
(("A", 1), HashSet::from(["x", "y", "z"])),
(("B", 2), HashSet::from(["y", "z", "w"])),
(("C", 3), HashSet::from(["z", "w", "v"])),
]);
let map2 = HashMap::from([
(("A", 1), HashSet::from(["x", "y", "a"])),
(("B", 2), HashSet::from(["y", "b", "c"])),
(("D", 4), HashSet::from(["z", "w", "d"])),
]);
Для общих ключей найдите симметрическую разность их множеств.
Дан список множеств разной размерности:
let sets = vec![
HashSet::from([1, 2, 3]),
HashSet::from([2, 3, 4, 5]),
HashSet::from([3, 4, 5, 6, 7]),
HashSet::from([4, 5, 6, 7, 8, 9])
];
Найдите множество чисел, которые образуют возрастающую цепочку: присутствуют в каждом следующем множестве, но отсутствуют в предыдущих.
Даны четыре множества:
let set1 = HashSet::from([1, 3, 5, 7, 9]);
let set2 = HashSet::from([2, 4, 6, 8, 10]);
let set3 = HashSet::from([1, 2, 3, 5, 7]);
let set4 = HashSet::from([2, 3, 5, 8, 9]);
Найдите все числа, которые являются простыми и присутствуют в нечетных множествах.