# tick 에서 매 tick 호출됨 — 큐의 가장 먼저 제출된 항목 1개를 처리 # 1 tick 당 1건 처리 — 동시 다발 제출은 FIFO 순서로 자동 직렬화됨 execute store result score qlen func.temp run data get storage mq:input queue execute if score qlen func.temp matches 0 run return 0 # 첫번째 항목 = 가장 먼저 제출된 것 data modify storage mq:tmp judge set value {input:"", answer:""} # 입력 정규화 (소문자 + 공백제거) — 정답과 비교는 둘 다 정규화된 형태로 data modify storage mq:tmp norm.in set from storage mq:input queue[0].text function mq:answer/normalize data modify storage mq:tmp judge.input set from storage mq:tmp norm.acc # 매크로로 해당 seq 를 가진 플레이어 찾아서 judge 실행 data modify storage mq:tmp _find set value {seq:0} data modify storage mq:tmp _find.seq set from storage mq:input queue[0].seq # 항목 제거 (한 번 비교했으면 큐에서 빼기) data remove storage mq:input queue[0] function mq:answer/macro/find_submitter with storage mq:tmp _find