1. Custom checker (PY)
--
- Đây là checker mặc định của website, cho phép người dùng cập nhật được nhiều thông tin nhất (chi tiết xem ở bên dưới). Chúng ta cần hoàn thành hàm check dưới đây: -
+ +1. Custom checker (PY)
++
+ Đây là checker mặc định của website, cho phép người dùng cập nhật được nhiều thông tin nhất (chi tiết xem ở bên dưới). Chúng ta cần hoàn thành hàm check dưới đây: +
-{{ -""" -def check(process_output, judge_output, **kwargs): + {{ + """ + def check(process_output, judge_output, **kwargs): # return True/False -"""|highlight('py')}} - -
- Trong đó, **kwargs
có thể chứa các biến sau:
-
-
-
process_output:
output
- judge_output:
đáp án
- submission_source
: Code bài nộp
- judge_input
: input
- point_value:
điểm của test đang chấm
- case_position:
thứ tự của test
- submission_language:
ngôn ngữ của bài nộp
- execution_time:
thời gian chạy
-
Return:
--
-
- Cách 1: Trả về True/False -
- Cách 2: Trả về một object
CheckerResult
có thể được gọi như sauCheckerResult(case_passed_bool, points_awarded, feedback='')
-
Ví dụ:
-Dưới đây là ví dụ cho bài toán: Input gồm 1 số nguyên n. In ra 2 số nguyên a, b sao cho a + b = n. -
-{{ -""" -from dmoj.result import CheckerResult +
+ Trong đó, **kwargs
có thể chứa các biến sau:
+
-
+
process_output:
output
+ judge_output:
đáp án
+ submission_source
: Code bài nộp
+ judge_input
: input
+ point_value:
điểm của test đang chấm
+ case_position:
thứ tự của test
+ submission_language:
ngôn ngữ của bài nộp
+ execution_time:
thời gian chạy
+
Return:
+-
+
- Cách 1: Trả về True/False +
- Cách 2: Trả về một object
CheckerResult
có thể được gọi như sauCheckerResult(case_passed_bool, points_awarded, feedback='')
+
Ví dụ:
+Dưới đây là ví dụ cho bài toán: Input gồm 1 số nguyên n. In ra 2 số nguyên a, b sao cho a + b = n. +
+ {{ + """ + from dmoj.result import CheckerResult -def wa(feedback): + def wa(feedback): return CheckerResult(False, 0, feedback) -def check(process_output, judge_output, judge_input, **kwargs): + def check(process_output, judge_output, judge_input, **kwargs): # process the input input_arr = judge_input.split() assert(len(input_arr) == 1) @@ -66,143 +66,143 @@ def check(process_output, judge_output, judge_input, **kwargs): output_arr = process_output.split() if (len(output_arr) != 2): - return wa('Wrong output format') + return wa('Wrong output format') try: - a, b = int(output_arr[0]), int(output_arr[1]) + a, b = int(output_arr[0]), int(output_arr[1]) except: - return wa('Wrong output format') + return wa('Wrong output format') if (n == a + b): - return True + return True return wa('a + b != n') -"""| highlight('py')}} -2. Custom validator (CPP)
--
- Để sử dụng chức năng này, cần viết một chương trình C++ pass vào 3 arguments theo thứ tự input_file
, output_file
, ans_file
tương ứng với các file input, output, đáp án.
-
- Để test chương trình trên máy tính, có thể dùng lệnh như sau (Windows): -
+ """| highlight('py')}} +
2. Custom validator (CPP)
++
+ Để sử dụng chức năng này, cần viết một chương trình C++ pass vào 3 arguments theo thứ tự input_file
, output_file
, ans_file
tương ứng với các file input, output, đáp án.
+
+ Để test chương trình trên máy tính, có thể dùng lệnh như sau (Windows): +
main.exe [input_file] [output_file] [ans_file]- hoặc thay bằng
./main
trên Linux/MacOS.
-
- Return:
-- Chương trình trả về giá trị: -
-
-
- 0 nếu AC (100% điểm) -
- 1 nếu WA (0 điểm) -
- 2 nếu điểm thành phần. Khi đó cần in ra stderr một số thực trong đoạn [0, 1] thể hiện cho tỷ lệ điểm. Nếu điểm < 1 thì hiển thị WA, điểm = 1 thì hiển thị AC. -
./main
trên Linux/MacOS.
+
+ Return:
++ Chương trình trả về giá trị: +
-
+
- 0 nếu AC (100% điểm) +
- 1 nếu WA (0 điểm) +
- 2 nếu điểm thành phần. Khi đó cần in ra stderr một số thực trong đoạn [0, 1] thể hiện cho tỷ lệ điểm. Nếu điểm < 1 thì hiển thị WA, điểm = 1 thì hiển thị AC. +
Ví dụ:
-Chương trình sau dùng để chấm bài toán: Cho n là một số nguyên dương. In ra hai số tự nhiên a, b sao cho a + b = n.
-Nếu in ra a + b = n và a, b >= 0 thì được 100% số điểm, nếu a + b = n nhưng một trong 2 số a, b âm thì được 50% số điểm.
-{{ -""" -#includeVí dụ:
+Chương trình sau dùng để chấm bài toán: Cho n là một số nguyên dương. In ra hai số tự nhiên a, b sao cho a + b = n.
+Nếu in ra a + b = n và a, b >= 0 thì được 100% số điểm, nếu a + b = n nhưng một trong 2 số a, b âm thì được 50% số điểm.
+ {{ + """ + #include3. Interactive (CPP)
--
+
3. Interactive (CPP)
++
Để sử dụng chức năng này, cần viết một chương trình C++ pass vào 2 arguments input_file
answer_file
tương ứng file input và đáp án (nếu cần thiết).
-
- Để test chương trình trên máy tính với tư cách thí sinh, có thể dùng lệnh như sau (Windows): -
+ ++ Để test chương trình trên máy tính với tư cách thí sinh, có thể dùng lệnh như sau (Windows): +
main.exe [input_file] [answer_file]- hoặc thay bằng./main
trên Linux/MacOS. - -Return:
-- Chương trình trả về giá trị: -
-
-
- 0 nếu AC (100% điểm) -
- 1 nếu WA (0 điểm) -
- 2 nếu điểm thành phần. Khi đó cần in ra stderr một số thực trong đoạn [0, 1] thể hiện cho tỷ lệ điểm. Nếu điểm < 1 thì hiển thị WA, điểm = 1 thì hiển thị AC. -
./main
trên Linux/MacOS.
+
+ Return:
++ Chương trình trả về giá trị: +
-
+
- 0 nếu AC (100% điểm) +
- 1 nếu WA (0 điểm) +
- 2 nếu điểm thành phần. Khi đó cần in ra stderr một số thực trong đoạn [0, 1] thể hiện cho tỷ lệ điểm. Nếu điểm < 1 thì hiển thị WA, điểm = 1 thì hiển thị AC. +
Ví dụ:
-Chương trình sau dùng để chấm bài toán guessgame: Người chơi phải tìm 1 số bí mật n (n chứa trong file input). Mỗi lần họ được hỏi một số x, và chương trình sẽ trả về "SMALLER", "BIGGER" hoặc "HOLA" dựa trên giá trị của n và x. Cần tìm ra n sau không quá 31 câu hỏi.
-{{ -""" -#includeVí dụ:
+Chương trình sau dùng để chấm bài toán guessgame: Người chơi phải tìm 1 số bí mật n (n chứa trong file input). Mỗi lần họ được hỏi một số x, và chương trình sẽ trả về "SMALLER", "BIGGER" hoặc "HOLA" dựa trên giá trị của n và x. Cần tìm ra n sau không quá 31 câu hỏi.
+ {{ + """ + #include