"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 formatAnswerPairLatex(first: number, second: number) { const operator = second < 0 ? "-" : "+"; return `${first} ${operator} ${Math.abs(second)}`; } function renderUserAnswerPair(result: GradeResult) { const secondOperator = result.userAnswer[1] < 0 ? "-" : "+"; const firstCorrect = result.userAnswer[0] === result.correctAnswer[0]; const secondCorrect = result.userAnswer[1] === result.correctAnswer[1]; return ( ); } function renderCorrectAnswerPair(result: GradeResult) { const secondOperator = result.correctAnswer[1] < 0 ? "-" : "+"; const firstCorrect = result.userAnswer[0] === result.correctAnswer[0]; const secondCorrect = result.userAnswer[1] === result.correctAnswer[1]; 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 = formatAnswerPairLatex( result.userAnswer[0], result.userAnswer[1], ); return ( {index + 1}. } /> ); })}
처음으로
); }