Mô tả
Tại FPT Software, đội kỹ thuật vừa nhận bàn giao một hệ thống do AI tự động khởi tạo. Trong đợt kiểm toán mã nguồn tuần này, anh Lead phát hiện ra một vấn đề khá nhức nhối: rất nhiều hàm bị thiếu khai báo kiểu dữ liệu trả về.
Theo quy ước TypeScript nội bộ, mọi hàm phải ghi rõ kiểu trả về trong cặp ngoặc vuông, ví dụ getUserProfile(): [string] hoặc calculateTotal(): [int]. Cặp ngoặc vuông [...] đứng ngay sau dấu chấm phẩy : mới được tính là một khai báo kiểu hợp lệ.
Nhiệm vụ của bạn là viết một công cụ mini nhận danh sách các dòng mã, kiểm tra từng dòng xem có xuất hiện cấu trúc :[...] hay không, rồi đếm xem có bao nhiêu hàm đang thiếu khai báo kiểu trả về để đội kỹ thuật kịp thời sửa chữa.
Đầu vào
- Dòng đầu tiên là số nguyên
n— số dòng mã nguồn cần kiểm duyệt (1 ≤ n ≤ 1000). ndòng tiếp theo, mỗi dòng là một chuỗi ký tự biểu diễn một dòng mã nguồn. Chuỗi chỉ chứa chữ cái tiếng Anh, chữ số, dấu chấm, dấu phẩy, dấu hai chấm, dấu chấm phẩy, ngoặc tròn, ngoặc vuông, ngoặc nhọn, khoảng trắng, gạch dưới và gạch ngang. Độ dài mỗi chuỗi không vượt quá 500 ký tự.
Đầu ra
- In ra một số nguyên duy nhất — số dòng mã không chứa cấu trúc
:[...].
Ràng buộc
- 1 ≤ n ≤ 1000.
- Độ dài mỗi chuỗi: 1 ≤ |s| ≤ 500.
- Ký tự trong chuỗi thuộc tập ASCII quy định ở mục Đầu vào.
Ví dụ
Input:
5 getUser(): [string] calcTotal(): [int] processData() verifyToken(token) log(message): [void]
Output:
2
Giải thích từng bước:
- Dòng 1
getUser(): [string]— chứa:[...]→ có khai báo kiểu. - Dòng 2
calcTotal(): [int]— chứa:[...]→ có khai báo kiểu. - Dòng 3
processData()— không có:[...]→ thiếu. - Dòng 4
verifyToken(token)— không có:[...]→ thiếu. - Dòng 5
log(message): [void]— chứa:[...]→ có khai báo kiểu. - Tổng cộng có 2 dòng thiếu, in ra
2.