# -*- coding: utf-8 -*- import re content = """1. Đánh giá sự thay đổi và phương án tối ưu mới: • Khi gói Xô Zòn Zã trở về mức giá gốc 179 nghìn đồng chắc chắn sẽ có phương án khác tối ưu hơn. • Thuật toán tối ưu hóa xác định việc chuyển sang gói Deal 129K Yay sẽ giúp tiết kiệm 16 nghìn đồng tiền mặt. 2. Chi tiết các lựa chọn thay thế cụ thể: • Phương án tối ưu số một gồm gói Deal 129K Yay cộng thêm hai miếng gà rán lẻ để vừa đủ 5 miếng gà. • Gói Deal 129K Yay cung cấp sẵn ba miếng gà rán cùng hai bánh trứng thơm ngon với mức giá 129 nghìn đồng. • Hai miếng gà mua lẻ có giá 74 nghìn đồng giúp giỏ hàng đáp ứng đúng số lượng 5 miếng gà rán yêu cầu. • Khách hàng chỉ cần gọi thêm một Combo Cơm Gà Quay Solo cùng hai món phụ với tổng chi phí 298 nghìn đồng. • Phương án số hai sử dụng gói Deal 99K Yay kết hợp cùng phần ba miếng gà lẻ có giá 299 nghìn đồng. • Gói này gồm hai miếng gà cùng hai bánh trứng và khi mua thêm ba miếng gà lẻ chỉ chênh đúng một nghìn. 3. So sánh ưu điểm và nhược điểm của từng phương án: • Phương án Deal 129K Yay có ưu điểm chi phí thấp nhất 298 nghìn đồng nhưng phải mua lẻ thêm hai miếng gà. • Phương án dùng Xô 179K có ưu điểm đặt món đơn giản nhưng nhược điểm là chi phí bị đội lên 314 nghìn đồng. • Phương án Xô Hợp Cạ 189 nghìn có ưu điểm thêm nước khoai nhưng nhược điểm là tổng tiền lên tới 319 nghìn. Nguyên lý đánh đổi chi phí và ràng buộc biên được kế thừa từ các lý thuyết quy hoạch tuyến tính chuẩn mực. Tài liệu tham khảo theo quy chuẩn APA 7: Dantzig, G. B. (1963). Linear programming and extensions. Princeton University Press. Vanderbei, R. J. (2020). Linear programming: Foundations and extensions (5th ed.). Springer.""" dashes = re.findall(r'[\-\—\–\⁃\‒\‐\‑]', content) print("Dashes found:", dashes) assert len(dashes) == 0, "Dashes detected!" lines = content.split('\n') for line in lines: line = line.strip() if not line or line.startswith("1.") or line.startswith("2.") or line.startswith("3.") or line.startswith("Tài") or line.startswith("Dantzig") or line.startswith("Vanderbei"): continue text = line if text.startswith("•"): text = text[1:].strip() if text.endswith('.'): text = text[:-1] words = text.split() wc = len(words) print(f"[{wc:02d} words] {text}") assert 20 <= wc <= 25, f"FAIL: {wc} words in: {text}" print("ALL PASSED PERFECTLY!")