<jupyter_start><jupyter_text>Computer Science Intensive Course - MindX![](./assets/logo.png) LAB 3. CÁC CTDL TRONG PYTHON<jupyter_code># run this cell FIRST
%run test_cases_3.ipynb<jupyter_output><empty_output><jupyter_text>Bài 1. Lọc TừCho một đoạn văn gồm nhiều từ và dấu câu, mỗi từ trong đoạn văn cách nhau bằng ít nhất một dấu cách. Lọc ra các từ đã xuất hiện trong đoạn văn và sắp xếp theo thứ tự bảng chữ cái (không phân biệt chữ hoa và thường). **Input**: Một đoạn văn dưới dạng *str* với độ dài < 10^6 ký tự.  **Output**: Một *list* chứa các từ đã xuất hiện trong đoạn văn theo thứ tự bảng chữ cái. Trả về *list* rỗng nếu không có từ nào.  **Ví dụ**:- Input: "The cat is chasing the rat. The dog is also chasing the rat."- Output: ['cat', 'chasing', 'is', 'rat', 'the']- Giải thích: Output là các từ đã xuất hiện trong đoạn văn được sắp xếp theo bảng chữ cái. Các từ 'is' và 'the' xuất hiện nhiều lần được lọc ra.  **Gợi ý**: Lọc các ký tự đặc biệt<jupyter_code>string = "The cat is chasing the rat."
''.join(c for c in string if c.isalpha())
def filter_word(inp_str):
    pass
# !!! DO NOT MODIFY THIS CELL
# Check result on test cases
test1(filter_word)<jupyter_output>Testing on 9 cases.
- Test 1 PASSED.
- Test 2 PASSED.
- Test 3 PASSED.
- Test 4 PASSED.
- Test 5 PASSED.
- Test 6 PASSED.
- Test 7 PASSED.
- Test 8 PASSED.
- Test 9 PASSED.
CONGRATULATIONS! All test cases passed!<jupyter_text>Bài 2. <NAME>Cho một đoạn văn gồm nhiều từ và dấu câu. Mỗi từ trong đoạn văn cách nhau bằng ít nhất một dấu cách. Đoạn văn này được hiển thị trên màn hình có độ rộng *k* ký tự. Hãy cắt đoạn văn này thành những chuỗi nhỏ hơn sao cho:- Mỗi chuỗi là dài nhất có thể- Mỗi chuỗi không được dài hơn k ký tự.- Không từ nào bị cắt ở giữa (VD không được cắt "MindX Technology School." thành "MindX Tech" và "nology School.")- Không có dấu cách ở đầu và cuối chuỗi đã cắt (VD có thể cắt "MindX Technology School." thành "MindX Technology" và "School.")**Input**: Một đoạn văn dưới dạng *str* với độ dài < 10^6 ký tự và một số nguyên *0 < k < 50*. Không từ nào dài hơn k.  **Output**: Trả về một list các chuỗi đã cắt.   **Ví dụ**:  - Input: "The cat is chasing the rat. The dog is also chasing the rat.", k=10- Output: ['The cat is', 'chasing', 'the rat.', 'The dog is', 'also', 'chasing', 'the rat.']<jupyter_code>def wrap_text(inp_str, k):
    pass
# !!! DO NOT MODIFY THIS CELL
# Check result on test cases
test2(wrap_text)<jupyter_output>Testing on 9 cases.
- Test 1 PASSED.
- Test 2 PASSED.
- Test 3 PASSED.
- Test 4 PASSED.
- Test 5 PASSED.
- Test 6 PASSED.
- Test 7 PASSED.
- Test 8 PASSED.
- Test 9 PASSED.
CONGRATULATIONS! All test cases passed!<jupyter_text>Bài 3. Phần Tử Bất ThườngCho hai *list* giống nhau về các phần tử nhưng khác nhau về thứ tự. Các phần tử trong *list* không trùng nhau. Tuy nhiên do sự cố, một trong hai list bị dư một phần tử lạ không trùng với các phần tử khác. Hãy tìm giá trị của phần tử đó.  **Input**: Hai list số nguyên có độ dài *n* và *n+1* (hoặc *n+1* và *n*) với *0 < n < 10^6*.  **Output**: Một số nguyên là giá trị của phần tử bất thường.  **Ví dụ**:- Input: [1, 4, 5, 7, 9], [7, 4, 1, 9]- Output: 5<jupyter_code>def find_anomaly(list_1, list_2):
    pass
# !!! DO NOT MODIFY THIS CELL
# Check result on test cases
test3(find_anomaly)<jupyter_output>Testing on 6 cases.
- Test 1 PASSED.
- Test 2 PASSED.
- Test 3 PASSED.
- Test 4 PASSED.
- Test 5 PASSED.
- Test 6 PASSED.
CONGRATULATIONS! All test cases passed!<jupyter_text>Bài 4. Tổng Đường ChéoCho một ma trận với *n* dòng và *n* cột. Hãy tính tổng các giá trị trên hai đường chéo của ma trận. **Input**: Ma trận *n x n* dưới dạng *list lồng nhau*, với *0 < n < 1000*. Mỗi phần tử trong khoảng [-10^6, 10^6]  **Output**: Một *tuple* bao gồm hai giá trị là tổng các giá trị trên đường chéo chính và đường chéo phụ, theo thứ tự.  **Ví dụ**:- Input:       [[1, 2, 3],  &nbsp;[4, 5, 6],  &nbsp;[7, 8, 9]]- Output: (15, 15)- Giải thích: Tổng trên đường chéo chính là 1+5+9 = 15; trên đường chéo phụ là 3+5+7 = 15**Gợi ý**:Trong Python, ma trận có thể được lưu trữ dưới dạng *list lồng nhau*, tức các phần tử trong *list* là các *list* khác, mỗi *list* phần tử có cùng độ dài.  Cách truy vấn:<jupyter_code>matrix = [[1, 2, 3],
          [4, 5, 6],
          [7, 8, 9]]

print("Second row: {}".format(matrix[1]))
print("Element at row 0, column 1: {}".format(matrix[0][1]))
def sum_diagonals(matrix):
    pass
# !!! DO NOT MODIFY THIS CELL
# Check result on test cases
test4(sum_diagonals)<jupyter_output>Testing on 7 cases.
- Test 1 PASSED.
- Test 2 PASSED.
- Test 3 PASSED.
- Test 4 PASSED.
- Test 5 PASSED.
- Test 6 PASSED.
- Test 7 PASSED.
CONGRATULATIONS! All test cases passed!
{'fraction_non_alphanumeric': 0.1153681506849315, 'fraction_numerical': 0.026113013698630137, 'mean_word_length': 3.47177033492823, 'pattern_counts': {'":': 0, '<': 26, '<?xml version=': 0, '>': 18, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '485301', 'license': 'MIT', 'n_tokens_mistral': 2464, 'n_tokens_neox': 2394, 'n_words': 798, 'path': 'Lab03.ipynb', 'repo_name': 'mindxDoc/CSI', 'size': '4673'}