Hệ thống kiểm tra lời giả

Một phần của tài liệu Tìm hiểu môi trường lập trình online và ứng dụng (Trang 60 - 63)

3. Giới thiệu về trang web http://acm.timus.ru/ 1 Giới thiệu chung

3.2.3. Hệ thống kiểm tra lời giả

Khi bạn gửi một lời giải bạn sẽ chuyển hướng đến các trang Judge status, trong đó có một danh sách các lời giải vừa được đệ trình.

Hình 11. Giao diện của bảng Solutions judgement results

Lời giải được đánh giá tự động bằng cách kiểm tra liên tiếp trên một tập hợp các trường hợp. Những lời giải được coi là đúng nếu nó ra câu trả lời chính xác cho tất cả các trường hợp thử nghiệm. Các trường hợp thử nghiệm đầu tiên thường giống như các mẫu trong báo cáo bài toán. Nếu câu trả lời nhận được không đúng đối với một số trường hợp thử nghiệm thì quá trình đánh giá dừng lại, số lượng thử nghiệm và các lỗi được tổng hợp và đưa ra trong bảng kết quả đánh giá. Một số bài toán có thể có nhiều câu trả lời chính xác cho các trường hợp thử nghiệm tương tự. Trong trường hợp này, câu trả lời sẽ được một chương trình đặc biệt kiểm tra tính đúng đắn.

Mỗi bài toán được xác định thời gian tối đa để thực hiện và giới hạn bộ nhớ có sẵn cho mỗi trường hợp thử nghiệm. Nếu chương trình vượt quá thời hạn hoặc cấp phát bộ nhớ lớn hơn đối với một số trường hợp kiểm tra, trường hợp kiểm tra được coi là thất bại. Đầu ra của các chương trình không được kiểm tra trong trường hợp này. Trong một số bài toán, thời gian và giới hạn bộ nhớ có thể được khá khó khăn. Giải quyết các bài toán như vậy trong một số các ngôn ngữ có sẵn có thể rất khó khăn hoặc thậm chí không thể.

giải, hệ thống trực tuyến sẽ tính toán dung lượng tối đa của bộ nhớ được sử dụng trong thời gian thực hiện (thiết lập hoạt động cao điểm) giảm một hằng số (thường là 1-15 MB) tương đương với dung lượng tối thiểu của bộ nhớ là cần thiết cho các chương trình trong ngôn ngữ đã chọn để chạy.

Kết quả đánh giá có thể là một trong các cách sau:

Accepted (Chấp nhận): Lời giải được chấp nhận.

Compilation error (Lỗi biên dịch): Biên soạn các chương trình thất bại. Báo cáo tổng hợp sẽ có thể truy cập trong 15 phút qua các liên kết trên trang Judge status. Những lý do: lỗi cú pháp, ngôn ngữ sai quy định.

Wrong answer (Câu trả lời sai): Câu trả lời của chương trình là không chính xác. Trong trường hợp này, chỉ số kiểm tra được báo cáo. Các dữ liệu đầu vào của trường hợp thử nghiệm này không có sẵn, vì người gửi lời giải cần tìm ra nguyên nhân của lỗi trên. Những lý do: lỗi trong chương trình, thuật toán là không chính xác, kết quả đầu ra của chương trình cho một tập tin.

Time limit exceeded (Thời gian vượt quá giới hạn): Chương trình vượt quá thời gian giới hạn. Lời giải sẽ được dừng lại ngay sau khi thời hạn bị vượt qua. do có thể: vòng lặp vô hạn.

Memory limit exceeded (Vượt quá giới hạn bộ nhớ): Chương trình vượt quá giới hạn bộ nhớ. Lời giải sẽ dừng lại khi vượt quá giới hạn này.lý do có thể: rò rỉ bộ nhớ.

Output limit exceeded (Giới hạn đầu ra vượt quá): Chương trình vượt quá giới hạn về kích thước đầu ra. Giới hạn này được thiết lập với một biên độ lớn, và thường không được quy định trong báo cáo bài toán. lý do có thể: vòng lặp vô hạn; lỗi trong chương trình.

Runtime error (Thời gian chạy lỗi): Chương trình chấm dứt với lỗi thời gian chạy. Những lý do: chia cho không, đệ quy vô hạn (mã lỗi "stack overflow"), kích thước mảng không đầy đủ hoặc truy cập vào bộ nhớ unaddressable (mã lỗi "access violation"). Để tránh stack overflow sử dụng chỉ thị đặc biệt được mô tả trong phần dành cho ngôn ngữ lập trình cụ thể.

Restricted function (Chức năng bị hạn chế): Chương trình đã cố gắng để thực hiện hoạt động không an toàn của hệ thống tự động, ví dụ, cố gắng để đọc một tập tin hoặc cố gắng truy cập vào một tài nguyên mạng.

Ví dụ, nếu bạn đã nhận được thông báo kết quả "câu trả lời sai trong bài kiểm tra 3", điều này có nghĩa là lời giải của bạn đã đúng trường hợp thử nghiệm 1 và 2 và đưa ra một câu trả lời không chính xác đối với trường hợp kiểm tra 3. Nếu bạn tìm ra lỗi và sửa lỗi, gửi lại lời giải và nhận được thông báo "vượt quá giới hạn Thời gian thử nghiệm trên 10", điều này có nghĩa rằng các lỗi đã tìm thực sự sai trên trường hợp thử nghiệm 3. Bây giờ lời giải vượt qua tất cả các trường hợp thử nghiệm 1-9, nhưng vượt quá giới hạn thời gian kiểm tra 10. Bạn không thể khẳng định chắc chắn chương trình của bạn sẽ là chính xác trong trường hợp thử nghiệm này, và sẽ được chấm dứt bởi các hệ thống trước khi nó đã hoàn thành thực hiện.

Mỗi bài toán có sự đánh giá các lời giải. Thời gian chạy của các lời giải được đặt hàng đầu tiên, sau đó theo ngày. Khi lời giải của bạn được chấp nhận, bạn có thể nhìn vào đánh giá này và ước tính hiệu quả lời giải của bạn như thế nào.

Bạn luôn có thể thảo luận về một bài toán cụ thể hoặc một hệ thống bài toán trực tuyến chung tại forum. Nếu bạn đã tìm thấy một lỗi trong bài toán, viết về việc này tại diễn đàn. Nếu lời giải của bạn được chấp nhận, nhưng lời giải của bạn không đúng trong một trường hợp thử nghiệm, hãy gửi email để timus_support@acm.timus.ru cho trường hợp kiểm tra này.

Một phần của tài liệu Tìm hiểu môi trường lập trình online và ứng dụng (Trang 60 - 63)

Tải bản đầy đủ (DOCX)

(66 trang)
w