Wiki Hướng dẫn ra đề

Hướng dẫn ra đề

huunguyen huunguyen Updated Tháng sáu 22, 2026

Mục này dành cho người ra đề (problem setter) trên CTOJ — từ cách viết đề bài rõ ràng đến cấu hình các kiểu chấm đặc biệt. Một bài tập tốt cần đề chính xác, bộ test mạnh, và trình chấm đúng với loại bài.

Các trang trong mục này

  1. Viết đề bài (Problem Statement) — cấu trúc một đề chuẩn: tóm tắt, input/output, ràng buộc, ví dụ, ký hiệu toán học. Bắt đầu từ đây.
  2. Đóng gói dữ liệu test (Test Data Package) — đóng gói các file test thành ZIP với manifest init.yml: cấu trúc, quy ước đặt tên, điểm, và cách tải lên.
  3. Trình chấm tùy chỉnh (Custom Checker) — khi đáp án không duy nhất (nhiều lời giải đúng), viết checker bằng testlib.h để chấm linh hoạt.
  4. Bài tương tác (Interactive Problem) — bài mà chương trình thí sinh "hỏi–đáp" với interactor qua nhiều lượt; cách viết interactor và cấu hình.
  5. Bài gọi hàm (Signature Grader) — thí sinh cài đặt hàm theo chữ ký cho trước thay vì đọc/ghi chuẩn; cách dựng grader.

Liên quan

Cú pháp Markdown và công thức toán dùng khi soạn đề: Hướng dẫn sử dụng Markdown.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0