circle-nodesBài tập Set - Nâng cao

Các bài tập về Set - Nâng cao

  1. Viết hàm count_unique_words nhận vào một chuỗi văn bản và đếm số từ duy nhất (không phân biệt hoa thường).

def count_unique_words(text):
    # Code của bạn ở đây
    pass

# Test
text = "Python is fun and Python is easy"
count = count_unique_words(text)
print(count)  # 5 (python, is, fun, and, easy)
  1. Viết hàm find_missing_numbers nhận vào một set chứa các số từ 1 đến n (nhưng thiếu một số), tìm các số bị thiếu.

def find_missing_numbers(numbers, n):
    # Code của bạn ở đây
    pass

# Test
numbers = {1, 2, 4, 6, 7, 9, 10}
missing = find_missing_numbers(numbers, 10)
print(missing)  # {3, 5, 8}
  1. Viết hàm all_subsets nhận vào một set và trả về tất cả các tập con của set đó.

def all_subsets(my_set):
    # Code của bạn ở đây
    pass

# Test
my_set = {1, 2, 3}
result = all_subsets(my_set)
print(result)
# [set(), {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}]
circle-info

Gợi ý: Dùng itertools.combinations hoặc đệ quy

  1. Viết hàm set_operations nhận vào ba set và trả về dictionary chứa kết quả các phép toán.

  1. Viết hàm powerset tính lũy thừa tập hợp (tất cả các tập con có thể) của một set.

  1. Viết hàm find_duplicates_in_lists nhận vào nhiều list và trả về set chứa các phần tử xuất hiện ở nhiều hơn một list.

  1. Viết hàm jaccard_similarity tính độ tương đồng Jaccard giữa hai set.

Công thức: J(A,B) = |A ∩ B| / |A ∪ B|

  1. Viết hàm partition_set chia một set thành hai set dựa trên một điều kiện (hàm).

  1. Viết hàm most_common_letters nhận vào một chuỗi và số n, trả về set chứa n ký tự xuất hiện nhiều nhất.

  1. Viết hàm check_all_unique nhận vào một list và kiểm tra xem tất cả phần tử có duy nhất không (không có phần tử trùng lặp).

  1. Viết hàm set_cartesian_product tính tích Descartes của hai set (tất cả các cặp có thể).

  1. Viết chương trình phân tích mối quan hệ giữa 3 lớp học. Cho trước:

  • class_a = {"Alice", "Bob", "Charlie", "David"}

  • class_b = {"Bob", "David", "Eve", "Frank"}

  • class_c = {"Charlie", "David", "Frank", "George"}

Tìm:

  • Học sinh học tất cả 3 lớp

  • Học sinh học đúng 2 lớp

  • Học sinh chỉ học 1 lớp

  1. Viết hàm symmetric_difference_multiple tính hiệu đối xứng của nhiều set (phần tử xuất hiện số lẻ lần).

  1. Viết hàm filter_set nhận vào một set và một hàm điều kiện, trả về set mới chỉ chứa các phần tử thỏa điều kiện.

  1. Viết hàm map_set áp dụng một hàm lên tất cả phần tử của set và trả về set mới.

  1. Viết hàm find_unique_in_all nhận vào nhiều set và trả về set chứa các phần tử chỉ xuất hiện trong đúng một set.

  1. Viết hàm is_partition kiểm tra xem một tập hợp các set có phải là phân hoạch của một set lớn không (không overlap và hợp lại bằng set lớn).

  1. Viết hàm create_frozenset_dict tạo dictionary với frozen set làm key.

  1. Viết hàm sliding_window_unique nhận vào một list và kích thước cửa sổ k, trả về list các set (mỗi set chứa các phần tử duy nhất trong cửa sổ).

  1. Viết hàm build_graph_from_sets nhận vào nhiều set và xây dựng đồ thị (graph) biểu diễn mối quan hệ giữa chúng (hai set có cạnh nối nếu có phần tử chung).

  1. Viết hàm bloom_filter_check mô phỏng đơn giản Bloom Filter sử dụng set (kiểm tra membership hiệu quả).

  1. Viết hàm set_cover_greedy giải bài toán Set Cover đơn giản bằng thuật toán tham lam (tìm số set nhỏ nhất để phủ tất cả phần tử).

  1. Viết hàm hamming_distance_sets tính khoảng cách Hamming giữa hai set (số phần tử khác nhau).

  1. Viết hàm optimize_storage nhận vào một list các chuỗi và trả về set các từ duy nhất, giúp tiết kiệm bộ nhớ.

  1. Viết hàm find_cliques tìm tất cả các nhóm set có phần tử chung với nhau (cliques).

Last updated