# Cú pháp mới cho input/output mẫu của test case trong đề bài markdown trên nền tảng TGBOJ Author: Đoàn Ngọc Bình Minh ## Sự khác biệt với input/ouput mẫu trước đó - Lúc trước, input/output của đề bài được biễu diễn dưới dạng code-block của markdown. <img src="https://hackmd.io/_uploads/r1Mx7TVnp.png" /> - Bây giờ, TGBOJ đã hỗ trợ trình chiếu test mẫu trực quan và rõ ràng hơn. ![image](https://hackmd.io/_uploads/Hy1ZNT426.png) ## Cú pháp cho giao diện test mẫu mới của TGBOJ - Để có thể biễu diễn test mẫu trực quan hơn qua giao diện mới. Cú pháp của giao diện này được thể hiện qua các cặp thẻ `<testlist>`, `<test>`, `<inp>`, `<out>`, `<note>` được tích hợp ngay bên trong file markdown của đề bài. - Định nghĩa các cặp thẻ: - `<testlist>` là cặp thẻ bao hàm tất cả các test mẫu. Một file markdown đề bài chỉ được phép có một cặp thẻ `<testlist>`, cặp thẻ này sẽ bao hàm các thẻ `<test>`. - `<test>` là cặp thẻ xác định một bộ test. Cặp thẻ này có thể có xuất hiện nhiều lần, nhưng chỉ được phép xuất hiện bên trong cặp thẻ `<testlist>`. - Các thẻ `<inp>`, `<out>`, `<note>` là các thẻ thể hiện input, output và note cho test case đó. Các thẻ này chỉ được phép xuất hiện bên trong thẻ `<test>` và không bắt buộc phải có. Ví dụ như một test case chỉ có input và output, thì không cần thêm thẻ `<note>` vào. Với những bài không có input hoặc output, thẻ `<inp>` hoặc `<out>` cũng có thể không cần xuất hiện. - Cấu trúc của một bộ test mẫu sẽ như sau: ``` <testlist> // đánh dấu bộ test <test> // test số 1 <inp> Input của test 1 </inp> <out> Output của test 1 </out> <note> Note của test 1 </note> </test> <test> // test số 2 <inp> Input của test 2 </inp> <out> Output của test 2 </out> </test> </testlist> ``` ![image](https://hackmd.io/_uploads/HJA4na4hT.png) ## Ví dụ một đề bài markdown với giao diện test mẫu mới - Đoạn markdown sau được lấy từ bài [A Plus B](https://oj.giftedbat.edu.vn/problem/aplusb). - ![image](https://hackmd.io/_uploads/rJwVp6Nh6.png) - ![image](https://hackmd.io/_uploads/B1dDaTVhp.png)