"use client"; import Link from "next/link"; import { useEffect, useRef } from "react"; import AnswerResultLine from "@/components/game/AnswerResultLine"; import KatexRenderer from "@/components/math/KatexRenderer"; import type { GradeResult, ParenthesisSignProblem } from "@/lib/engine/types"; interface ScoreSummaryProps { correctCount: number; totalCount: number; problems: ParenthesisSignProblem[]; results: (GradeResult | null)[]; onRestart: () => void; } function formatAnswerLatex(terms: number[]) { return terms .map((term, index) => { if (index === 0) return `${term}`; const operator = term < 0 ? "-" : "+"; return `${operator} ${Math.abs(term)}`; }) .join(" "); } function renderUserAnswerPair(result: GradeResult) { return ( {result.userAnswer.map((term, index) => { const operator = term < 0 ? "-" : "+"; const correct = term === result.correctAnswer[index]; const displayLatex = index === 0 ? `${term}` : `${operator} ${Math.abs(term)}`; return ( ); })} ); } function renderCorrectAnswerPair(result: GradeResult) { return ( {result.correctAnswer.map((term, index) => { const operator = term < 0 ? "-" : "+"; const correct = result.userAnswer[index] === term; const displayLatex = index === 0 ? `${term}` : `${operator} ${Math.abs(term)}`; return ( ); })} ); } export default function ScoreSummary({ correctCount, totalCount, problems, results, onRestart, }: ScoreSummaryProps) { const restartButtonRef = useRef(null); const solvedItems = problems .map((problem, index) => ({ problem, result: results[index], })) .filter( (item): item is { problem: ParenthesisSignProblem; result: GradeResult } => item.result !== null, ); useEffect(() => { restartButtonRef.current?.focus(); }, []); return (

괄호 음수 분배

풀이 결과

{correctCount} / {totalCount} 정답

    {solvedItems.map(({ problem, result }, index) => { const userAnswerLatex = formatAnswerLatex(result.userAnswer); return ( {index + 1}. } /> ); })}
처음으로
); }