г. Ростов-на-Дону,
ул. Малиновского, д. 66/1, пом. 6
+7 904-444-88-37
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).", }