IOAI 2025 — Chameleon

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Output
Điểm: 2100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Mô tả


Ví dụ gợi ý: chuỗi biểu tượng này gợi ý từ bí mật "fire station" (trạm cứu hỏa).


Cùng các biểu tượng nhưng đảo thứ tự lại gợi ý "firefighter" (lính cứu hỏa) -- thứ tự là có nghĩa.

Chameleon là trò chơi đoán từ trong đó người chơi truyền đạt ý tưởng qua các biểu tượng (icon). Có hai vai trò:

  • Người ra gợi ý (Clue-Giver) chọn một từ bí mật (một từ hoặc cụm từ), rồi tạo gợi ý bằng một chuỗi biểu tượng có thứ tự từ kho biểu tượng dùng chung; không được nói hoặc viết.
  • Người đoán (Guesser) nhìn chuỗi biểu tượng và một danh sách 100 phương án (đảm bảo chứa từ bí mật), rồi xuất ra danh sách xếp hạng tối đa 10 dự đoán.

Thứ tự biểu tượng là có nghĩa: biểu tượng đầu tiên thường biểu diễn ý chính của từ bí mật, các biểu tượng sau cung cấp ngữ cảnh bổ sung. Cùng một biểu tượng có thể mang ý nghĩa khác tùy ngữ cảnh — ví dụ biểu tượng "trái tim" có thể gợi tới ống nghe (dụng cụ bác sĩ nghe tim) hoặc thây ma (nhân vật vừa chết vừa sống).

Nhiệm vụ của bạn là xây dựng chương trình AI đóng vai Người đoán: cho gợi ý và 100 phương án, xuất ra danh sách xếp hạng tối đa 10 dự đoán. Điểm cao hơn nếu từ bí mật ở vị trí càng đầu danh sách.

Ràng buộc về mô hình

Theo quy định gốc của IOAI 2025:

  • Lời giải phải sử dụng mô hình có dưới 1 tỷ tham số (xấp xỉ 4 GB bộ nhớ).
  • Không được gọi bất kỳ API mô hình bên ngoài nào tại thời điểm suy luận (inference time).
  • Trong giai đoạn phát triển và huấn luyện, bạn được phép sử dụng các mô hình tiền huấn luyện (pre-trained), nhưng lời giải nộp lên phải độc lập (self-contained).

Trên LQDOJ, hệ thống chấm không kiểm tra kích thước mô hình — đây là quy định kiểu honour-system, mong các bạn tự giác tuân thủ tinh thần của bài.

Dữ liệu

Các tệp dữ liệu đính kèm:

  • hint_icons.zip — chứa 118 biểu tượng dạng JPEG (<id>.jpg) cùng tệp descriptions.json ánh xạ mỗi id sang phần mô tả văn bản của biểu tượng.
  • takehome_validation.json20 ví dụ kèm nhãn để bạn làm quen với định dạng.
  • validation_set.json79 truy vấn validation, có nhãn, dùng để đánh giá lời giải tại chỗ.
  • test_set.json79 truy vấn test, KHÔNG có nhãn. Đây là tập bạn cần trả lời.

Mỗi mục trong các tệp validation/test có hai trường:

  • hints: danh sách số nguyên — id các biểu tượng theo đúng thứ tự Người ra gợi ý chỉ ra.
  • options: danh sách 100 chuỗi là các từ/cụm từ ứng cử cho từ bí mật (đảm bảo từ bí mật nằm trong danh sách này).

Ngoài ra còn có:

  • ioai25chameleon_baseline.ipynb — notebook baseline (sentence-transformers + cosine similarity, có ví dụ fine-tune cơ bản) để bạn bắt đầu.
  • figures.zip — các hình minh họa của đề bài gốc.

Bài nộp

Nộp một tệp ZIP chứa duy nhất test_answer.csv với cấu trúc sau:

  • Đúng 79 dòng, không có dòng tiêu đề, theo đúng thứ tự các truy vấn trong test_set.json.
  • Mỗi dòng gồm 10 dự đoán ngăn cách bởi dấu phẩy, xếp hạng từ khả năng cao nhất tới thấp nhất.
  • Mỗi dự đoán phải trùng khớp một chuỗi trong options của truy vấn tương ứng. So sánh thực hiện theo kiểu không phân biệt hoa thường (case-insensitive).

Tiêu chí chấm

Với mỗi truy vấn, hệ thống tính điểm bằng tổ hợp có trọng số của hai chỉ số:

  • Hits@10: bằng 1 nếu từ bí mật xuất hiện trong 10 dự đoán, ngược lại bằng 0.
  • nDCG@10: nếu từ bí mật xuất hiện ở vị trí thứ \(i\) (đánh số từ 1) thì điểm là \(\dfrac{1}{\log_2(i+1)}\) (ví dụ: hạng 1 → 1.00, hạng 2 → ~0.63, hạng 4 → ~0.43, hạng 10 → ~0.29). Nếu không có trong danh sách thì bằng 0.

Điểm cho mỗi truy vấn:

\[\text{score} = 0.9 \cdot \text{Hits@10} + 0.1 \cdot \text{nDCG@10}\]

Điểm tổngtrung bình cộng điểm trên toàn bộ 79 truy vấn của tập test.

Nguồn

Đề bài lấy từ vòng At-Home Round của IOAI 2025: https://github.com/IOAI-official/IOAI-2025/tree/main/At-Home-Round/Chameleon.

Tệp

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: