import React, { useEffect, useMemo, useState } from "react";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Badge } from "@/components/ui/badge";
import { Progress } from "@/components/ui/progress";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
import { ScrollArea } from "@/components/ui/scroll-area";
import { motion } from "framer-motion";
import { CheckCircle2, XCircle, BarChart3, Shuffle, FileText, Trophy, RotateCcw, Search, Filter } from "lucide-react";
type Task = {
id: string;
examTask: number;
title: string;
topic: string;
difficulty: "easy" | "medium" | "hard";
question: string;
answer: string;
explanation: string;
variantGroup: string;
};
type Attempt = {
taskId: string;
userAnswer: string;
isCorrect: boolean;
timestamp: number;
examTask: number;
difficulty: Task["difficulty"];
};
const TASKS: Task[] = [
{
id: "t1",
examTask: 1,
title: "Кодирование текста",
topic: "Кодирование информации",
difficulty: "easy",
variantGroup: "Вариант 1",
question:
"В одной из кодировок Unicode каждый символ кодируется 4 байтами. Текст уменьшился на 160 бит после удаления одного слова и лишних знаков. На сколько символов уменьшился текст? Введите только число.",
answer: "5",
explanation:
"160 бит = 20 байт. Один символ = 4 байта, значит удалено 20 / 4 = 5 символов.",
},
{
id: "t2",
examTask: 2,
title: "Префиксные коды",
topic: "Декодирование",
difficulty: "medium",
variantGroup: "Вариант 1",
question:
"Даны коды: А=0, Б=10, В=110, Г=111. Сколько разных расшифровок имеет цепочка 010? Введите число.",
answer: "1",
explanation:
"010 раскладывается только как 0|10 → АБ. Других корректных разбиений нет.",
},
{
id: "t3",
examTask: 3,
title: "Логическое выражение",
topic: "Логика",
difficulty: "easy",
variantGroup: "Вариант 1",
question:
"Найдите наибольшее натуральное x, для которого истинно: ((x < 100) ИЛИ НЕ(x > 30)) И НЕ(x = 99).",
}