"""NC-01 · tính lại Bảng 1 và Bảng 2 từ file điểm (chỉ dùng thư viện chuẩn của Python 3).

  python3 tinh_bang.py diem-2026-09-28.csv

Bảng 1: trung bình ghép cặp, tức 32 câu trả lời của Codex và Claude mỗi vòng (GPT-5.5 không có đủ ba vòng).
Bảng 2: trung bình theo từng mô hình. Ô trống trong CSV là câu trả lời không chấm tiêu chí đó, không tính vào trung bình.
"""
import csv, sys

COLS = ['tin_cay', 'portfolio', 'cong_ty_phan_mem_that', 'san_sang_doanh_nghiep_lon']
rows = list(csv.DictReader(open(sys.argv[1] if len(sys.argv) > 1 else 'diem-2026-09-28.csv', encoding='utf-8')))


def avg(sel, col):
    v = [float(r[col]) for r in sel if r[col] != '']
    return f"{sum(v) / len(v):.2f} ({len(v)})" if v else '-'


print('Bảng 1 · ghép cặp Codex + Claude')
for vong in ('1', '2', '3'):
    sel = [r for r in rows if r['vong'] == vong and r['mo_hinh'] in ('codex', 'claude')]
    print(f'vòng {vong}, {len(sel)} câu:', '  '.join(f'{c} {avg(sel, c)}' for c in COLS))
print('Bảng 2 · theo mô hình')
for vong in ('1', '2', '3'):
    for m in ('codex', 'claude', 'gpt-5.5'):
        sel = [r for r in rows if r['vong'] == vong and r['mo_hinh'] == m]
        if sel:
            print(f'vòng {vong} {m}, {len(sel)} câu:', '  '.join(f'{c} {avg(sel, c)}' for c in COLS))
