# -*- coding: utf-8 -*- import re sentences = [ "Nếu hệ thống loại trừ hoàn toàn các nhóm Hot Deal và Value Deals khỏi thuật toán thì bài toán sẽ thay đổi đáng kể.", "Mức giá tối ưu nhất có thể đạt được trong trường hợp này sẽ tăng lên mốc 314 nghìn đồng cho toàn bộ đơn.", "Phương án này vẫn yêu cầu ghép nối một gói Combo Cơm Gà Quay Solo nhằm tiết kiệm chi phí giải khát đi kèm.", "Chi tiết cơ cấu các món trong đơn hàng tối ưu 314 nghìn đồng được tính toán chuẩn xác theo từng phần cụ thể:", "Gà rán được mua qua phần ba miếng giá 105 nghìn đồng cùng phần hai miếng giá 74 nghìn đồng để đủ số lượng.", "Hai bánh trứng được mua lẻ với tổng chi phí 40 nghìn đồng không thay đổi so với các phương án tính toán trước.", "Nhu cầu cơm và nước vẫn tiếp tục sử dụng Combo Cơm Gà Quay Solo giá 59 nghìn đồng để giữ chi phí thấp.", "Hai món ăn kèm gồm khoai tây nghiền và bắp cải trộn được mua riêng lẻ với tổng mức giá 36 nghìn đồng chuẩn.", "Nếu khách hàng chọn mua lẻ toàn bộ bao gồm cả cơm và nước thì tổng chi phí sẽ chạm mốc 322 nghìn đồng.", "Việc tận dụng Combo Cơm Gà Quay Solo giúp giảm 8 nghìn đồng so với việc mua cơm và nước ngọt tách rời nhau.", "Các gói Combo Nhóm như Tụ Tập hoặc No Nê đều làm tổng chi phí vượt ngưỡng 336 nghìn đồng do dư thừa món.", "Thuật toán tìm kiếm vét cạn đã xác nhận mức giá 314 nghìn đồng là nghiệm tối ưu cuối cùng cho ràng buộc mới.", "Phương pháp tối ưu hóa danh mục sản phẩm kế thừa các nghiên cứu cơ bản trong lĩnh vực quy hoạch tuyến tính ứng dụng.", ] for idx, s in enumerate(sentences): words = s.split() wc = len(words) dashes = re.findall(r'[\-\—\–\⁃\‒\‐\‑]', s) status = "OK" if 20 <= wc <= 25 and not dashes else "FAIL" print(f"[{wc:02d}] {status}: {s}") if status == "FAIL": print(" -> ERROR:", wc, dashes)