ÿþ<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>UP TET * G * 0 -1 | - > 7 > * M 0 % .  9 ? ( M & @ | & H ( ?   - M / > 8  ( 0 G  0 </title> <link href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='45' fill='%234361ee'/%3E%3Ctext x='50' y='68' font-size='48' text-anchor='middle' fill='white' font-weight='bold'%3E9 ? %3C/text%3E%3C/svg%3E" rel="icon"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> :root { --primary: #4361ee; --primary-dark: #3f37c9; --secondary: #4895ef; --danger: #f72585; --success: #4cc9f0; --light: #f8f9fa; --dark: #212529; --gray: #6c757d; --border-radius: 12px; --box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); --transition: all 0.3s ease; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', 'Poppins', system-ui, sans-serif; } body { background: linear-gradient(135deg, #f5f7fa 0%, #e2e8f0 100%); min-height: 100vh; display: flex; justify-content: center; align-items: center; padding: 20px; color: var(--dark); line-height: 1.6; } .container { width: 100%; max-width: 1100px; background: white; border-radius: var(--border-radius); box-shadow: var(--box-shadow); overflow: hidden; transition: var(--transition); animation: fadeIn 0.5s ease-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .header { background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: white; padding: 30px 20px; text-align: center; position: relative; overflow: hidden; } .header::before { content: '=ØÖÜ'; position: absolute; bottom: 10px; right: 20px; font-size: 70px; opacity: 0.1; } .header h1 { font-size: 1.9rem; margin-bottom: 10px; font-weight: 700; letter-spacing: -0.5px; } .header p { font-size: 1rem; opacity: 0.9; } .content-area { padding: 30px; } .hidden { display: none !important; } .btn { display: inline-block; padding: 12px 28px; border-radius: 50px; font-weight: 600; cursor: pointer; transition: var(--transition); border: none; text-align: center; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); margin: 10px 5px; } .btn-primary { background: var(--primary); color: white; } .btn-primary:hover { background: var(--primary-dark); transform: translateY(-2px); } .btn-success { background: #28a745; color: white; } .btn-success:hover { background: #218838; transform: translateY(-2px); } .btn-danger { background: var(--danger); color: white; } .btn-danger:hover { background: #d3166b; transform: translateY(-2px); } .btn-level { background: var(--light); color: var(--dark); border: 2px solid var(--gray); font-size: 1.1rem; padding: 14px 28px; width: 200px; } .btn-level:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0,0,0,0.2); } .btn-level.selected { background: var(--primary); color: white; border-color: var(--primary); } .btn-group { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin: 20px 0; } .level-buttons { display: flex; justify-content: center; gap: 25px; margin: 30px 0; flex-wrap: wrap; } .section-title { text-align: center; margin-bottom: 25px; color: var(--primary-dark); font-size: 1.6rem; position: relative; padding-bottom: 12px; font-weight: 600; } .section-title::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 80px; height: 3px; background: var(--secondary); border-radius: 3px; } .checkbox-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); gap: 14px; margin: 25px 0; max-height: 480px; overflow-y: auto; padding: 15px; border: 1px solid #e2e8f0; border-radius: 18px; background: #fafef7; } .checkbox-item { display: flex; align-items: center; background: white; padding: 8px 12px; border-radius: 40px; transition: all 0.2s; border: 1px solid #e9ecef; } .checkbox-item:hover { background: #e8f0fe; transform: translateX(3px); } .checkbox-item input { margin-right: 12px; width: 18px; height: 18px; cursor: pointer; accent-color: var(--primary); } .checkbox-item label { cursor: pointer; font-size: 0.92rem; font-weight: 500; } .question { margin-bottom: 25px; page-break-inside: avoid; background: #ffffff; padding: 15px; border-radius: 16px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); border-left: 4px solid var(--secondary); } .question-text { font-weight: 700; margin-bottom: 12px; font-size: 1.05rem; color: #2d3748; } .option { margin-left: 24px; margin-bottom: 6px; color: #4a5568; } .action-buttons { display: flex; justify-content: center; flex-wrap: wrap; gap: 18px; margin-top: 40px; } .answer-sheet { margin-top: 40px; padding: 20px; background: #f0faf4; border-radius: var(--border-radius); } .answer-table { width: 100%; border-collapse: collapse; margin-top: 15px; border-radius: 12px; overflow: hidden; } .answer-table th, .answer-table td { border: 1px solid #cbd5e0; padding: 10px; text-align: center; } .answer-table th { background-color: var(--primary); color: white; font-weight: 600; } .streak-container { display: flex; justify-content: center; align-items: center; margin: 20px 0; gap: 20px; flex-wrap: wrap; } .streak-counter { background: #ff9100; color: white; padding: 10px 20px; border-radius: 60px; font-weight: bold; box-shadow: 0 4px 10px rgba(0,0,0,0.1); } .date-display { font-size: 1rem; font-weight: 600; background: #e2e8f0; padding: 8px 18px; border-radius: 40px; color: var(--primary-dark); } .progress-container { margin: 20px 0; background: #edf2f7; padding: 20px; border-radius: 28px; } .progress-bar { height: 12px; background: #cbd5e0; border-radius: 20px; overflow: hidden; margin-top: 12px; } .progress-fill { height: 100%; background: var(--success); border-radius: 20px; transition: width 0.5s ease; } .problem-of-day { background: linear-gradient(115deg, #fff6e5, #ffedd5); border-left: 5px solid var(--danger); padding: 20px; margin: 20px 0; border-radius: 24px; } .daily-summary { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 15px; margin: 20px 0; } .summary-card { flex: 1; min-width: 110px; background: white; padding: 15px; border-radius: 20px; box-shadow: 0 8px 20px rgba(0,0,0,0.05); text-align: center; border: 1px solid #e2e8f0; } .home-icon { position: absolute; top: 20px; left: 20px; color: white; font-size: 26px; cursor: pointer; transition: transform 0.2s; z-index: 5; background: rgba(0,0,0,0.2); width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; } .home-icon:hover { transform: scale(1.08); background: rgba(0,0,0,0.4); } .instructions { margin-bottom: 30px; padding: 18px 22px; background: #f7fafc; border-radius: 24px; border: 1px solid #e2e8f0; } @media (max-width: 680px) { .header h1 { font-size: 1.3rem; } .btn-level { width: 140px; font-size: 0.9rem; padding: 12px 16px; } .checkbox-container { grid-template-columns: 1fr; } } @media print { .action-buttons, .streak-container, .progress-container, .problem-of-day, .daily-summary, .home-icon { display: none; } .question { break-inside: avoid; } } .topic-badge { background: var(--secondary); color: white; font-size: 0.7rem; border-radius: 20px; padding: 2px 10px; display: inline-block; margin-bottom: 8px; } </style> </head> <body> <div class="container" id="startContainer"> <div class="header"> <a href="up-tet-exam-paper1-daily-practice-problem-generator.html" class="home-icon" ><i class="fas fa-language"></i></a> <h1><i class="fas fa-book"></i> UP TET * G * 0 -1</h1> <p>- > 7 > * M 0 % .  9 ? ( M & @ | & H ( ?   - M / > 8 8 . 8 M / >  ( 0 G  0 (9 ?  & @ . G  )</p> </div> <div class="content-area"> <div id="startScreen"> <h2 class="section-title">=ØÖÜ 9 ? ( M & @ - > 7 >  5  6 ?  M 7 # </h2> <div class="streak-container"> <div class="streak-counter"><i class="fas fa-fire"></i> 2  > $ > 0 : <span id="streakDays">0</span> & ? ( </div> <div class="date-display" id="currentDate"></div> </div> <div class="progress-container"> <h3><i class="fas fa-chart-line"></i>  *  @ * M 0  $ ? </h3> <div class="progress-bar"><div class="progress-fill" id="progressFill" style="width: 0%"></div></div> <p id="progressText" style="margin-top: 8px;">0% * B 0 M # </p> </div> <div class="btn-group"> <button class="btn btn-primary" id="problemOfDayBtn"><i class="fas fa-calendar-day"></i> & ? (  @ 8 . 8 M / > </button> <button class="btn btn-success" id="customPracticeBtn"><i class="fas fa-pen-ruler"></i>  8 M  .  - M / > 8 </button> </div> </div> <div id="subjectSelection" class="hidden"> <h2 class="section-title"><Ø¯ß 5 ? 7 /  / ( </h2> <div class="btn-group"><button class="btn btn-primary" id="selectHindiBtn"><i class="fas fa-language"></i> - > 7 > * M 0 % .  9 ? ( M & @ </button></div> </div> <div id="topicSelection" class="hidden"> <h2 class="section-title">=ØÚÜ  ' M / > / K   >  / (  0 G  (31  ' M / > / )</h2> <form id="topicForm"> <div class="checkbox-container" id="topicsContainer"></div> </form> <div class="btn-group"> <button class="btn btn-danger" id="backToStartBtn"><i class="fas fa-arrow-left"></i> * M 0 > 0  - * 0 5 > * 8 </button> <button class="btn btn-success" id="generateAssignmentBtn"><i class="fas fa-cogs"></i>  - M / > 8 * M 0 6 M (  G ( 0 G   0 G  </button> </div> </div> <div id="levelSelection" class="hidden"> <h2 class="section-title">¡&  ? ( >  8 M $ 0  A ( G  </h2> <p class="text-center" style="text-align:center; margin-bottom:10px;"> * ( G TET 8 M $ 0  G  ( A 8 > 0  A ( G  :</p> <div class="level-buttons"> <button class="btn btn-level" id="level1Btn">8 M $ 0 1 <br><small>, G 8 ?  / TET  ' > 0 </small></button> <button class="btn btn-level" id="level2Btn">8 M $ 0 2 <br><small>. ' M / . (UP TET . > (  )</small></button> <button class="btn btn-level" id="level3Btn">8 M $ 0 3 <br><small> ( M ( $ (5 ? 6 M 2 G 7 # > $ M .  )</small></button> </div> <div class="btn-group"> <button class="btn btn-danger" id="backToTopicsBtn">5 ? 7 / K  * 0 5 > * 8 </button> <button class="btn btn-success" id="generateFinalBtn"> - M / > 8 * M 0 6 M (  G ( 0 G   0 G  </button> </div> </div> </div> </div> <div class="container hidden" id="generatedPaperContainer"></div> <script> const { jsPDF } = window.jspdf; const startContainer = document.getElementById('startContainer'); const startScreen = document.getElementById('startScreen'); const subjectSelection = document.getElementById('subjectSelection'); const topicSelection = document.getElementById('topicSelection'); const levelSelection = document.getElementById('levelSelection'); const generatedPaperContainer = document.getElementById('generatedPaperContainer'); // ======================== - > 7 > * M 0 % .  9 ? ( M & @ (31  ' M / > / ) ======================== const chaptersList = [ " * ? $  ( A  M  G & ", "9 ? ( M & @ 5 0 M # . > 2 > (8 M 5 0 , 5 M /   ( )", "5 0 M # K   G . G 2 8 G . > $ M 0 ?  $ % >  . > $ M 0 ?  6 , M & K   @ * 9  > ( ", "5 >  M / 0  ( > ", "9 ? ( M & @  @ 8 - @ ' M 5 ( ? / K   G * > 0 8 M * 0 ?    $ 0  @  > (  > 0 @ ", "9 ? ( M & @ - > 7 >  @ 8 - @ ' M 5 ( ? / K  , 5 0 M # K  ,  ( A 8 M 5 > 0 ,  ( A ( > 8 ?   5   ( M & M 0 , ? ( M & A . G   ( M $ 0 ", "5 ? 0 > .  ? ( M 9 K  / % > -  2 M * 5 ? 0 > . ,  0 M ' 5 ? 0 > . , * B 0 M # 5 ? 0 > . , * M 0 6 M ( 5 >   , 5 ? 8 M . / , K '  ,  ? ( M 9 K   > * M 0 / K  ", "8 . > ( ' M 5 ( ? / K  5 > 2 G 6 , M & ", "5 ? 2 K . 6 , M & ", "* 0 M / > / 5 >  @ 6 , M & ", "5 >  M / >  6 K   G 2 ?    6 , M & ", "8   M  >  5  8  G - G & ", "8 0 M 5 ( > .  5  8  G - G & ", " M 0 ? / >  5  8  G - G & ", "5 ? 6 G 7 #  5  8  G - G & ", "5  ( ", "2 ?   ", " > 2 ", " > 0  ", "* M 0 $ M / / ", " * 8 0 M  ", "$ $ M 8 .  5  $ & M - 5 ", "5 0 M $ ( @ ", "2 K  K  M $ ? / >   5  . A 9 > 5 0 K   G  0 M % ", "8  ' ? ", "5 >  M / ", "6 , M & 0 B * ", "8 . > 8 ", " 2   > 0 ", " 5 ? / K   5  2 G   K   @ 0  ( >   ", "- > 7 > 5 ?  > 8  >  ' M / > * ( " ]; // ===============  ' M / > / 5 > 0 * M 0 6 M ( ! G  > , G 8 (8 . C & M ' , 8 M $ 0 > ( A 8 > 0 ) =============== const questions = {}; //  ' M / > / 1:  * ? $  ( A  M  G & questions[" * ? $  ( A  M  G & "] = { level1: [ { question: " * ? $  ( A  M  G &  >  M / >  0 M % 9 H ?", options: [" K * " < > (  / > 9 K ", " K  ? ( 9 K ", " K 2  , > 9 K ", " K * & M / . G  9 K "], answer: "A" }, { question: " * ? $  & M / >  6 . G  * M 0 6 M ( K   > $ M $ 0  9 >  8 G 2 G ( >  > 9 ?  ?", options: [" & M / >  6 8 G ", " * ( G  M  > ( 8 G ", "6 , M &  K 6 8 G ", " @  > 8 G "], answer: "A" } ], level2: [ { question: "( ? . M ( 2 ?  ? $ 5 >  M / >  6  > - > 5 > 0 M % 8 .  ( G  G 2 ?   M / >  5 6 M /  9 H ? ' 2 . G  0 9  0 .  0 8 G , H 0 '", options: ["8  & 0 M - 8 .  ( > ", "5 M / >  0 #  M  > ( ", " > 5 M / , K ' ", "6 , M & > 0 M % "], answer: "A" } ], level3: [ { question: " * ? $  ( A  M  G &  G  ' > 0 * 0 6 @ 0 M 7  ( ? 0 M ' > 0 #  ? 8  L 6 2  K & 0 M 6 > $ > 9 H ?", options: [" 9 ( * (  5  ( ?  K ! < ", "6 @  M 0 * ( ", "' M 5 ( ? * 9  > ( ", " > 5 M / 0 8 "], answer: "A" } ] }; //  ' M / > / 2: 9 ? ( M & @ 5 0 M # . > 2 > questions["9 ? ( M & @ 5 0 M # . > 2 > (8 M 5 0 , 5 M /   ( )"] = { level1: [ { question: "9 ?  & @ 5 0 M # . > 2 > . G   A 2  ? $ ( G 8 M 5 0 9 K $ G 9 H  ?", options: ["11", "12", "13", "14"], answer: "A" }, { question: "9 ?  & @ 5 M /   ( K   @  A 2 8   M / >  ? $ ( @ 9 H ?", options: ["33", "35", "36", "38"], answer: "C" } ], level2: [ { question: "' M 7 '  ? 8 5 0 M   > 5 M /   ( 9 H ?", options: ["8  / A  M $ 5 M /   ( ", "$ > 2 5 M / ", " 7 M M / ", "& ( M $ M / "], answer: "A" } ], level3: [ { question: "9 ?  & @ 5 0 M # . > 2 >  G 5 0 M  @  0 #  G  ( A 8 > 0 '6 ', '7 ', '8 '  M / >  9 2 > $ G 9 H  ?", options: [" 7 M . 5 M /   ( ", "8 M * 0 M 6 5 M /   ( ", "  $  8 M % 5 M /   ( ", " 7 M M / 5 M /   ( "], answer: "A" } ] }; // * 0 M / > / 5 >  @ 6 , M & questions["* 0 M / > / 5 >  @ 6 , M & "] = { level1: [ { question: "'  M ( ? '  > * 0 M / > / 5 >  @ 6 , M &  M / > 9 H ?", options: ["* > 5  ", " 2 ", "5 > / A ", "* C % M 5 @ "], answer: "A" }, { question: "'  & M 0 . > '  > * 0 M / > / 5 >  @ 6 , M & , $ >   d ", options: ["  & A ", "8 B 0 M / ", "$ > 0 > ", " M 0 9 "], answer: "A" } ], level2: [ { question: "' (  & '  > * 0 M / > / 5 >  @ ( 9 @  9 H :", options: ["& A  ", "9 0 M 7 ", "8 A  ", "* M 0 8 ( M ( $ > "], answer: "A" }, { question: "'* > ( @ '  G 2 ?   L ( 8 > * 0 M / > / 5 >  @ 6 , M & ( 9 @  9 H ?", options: [" ( 2 ", " 2 ", "5 > 0 ? ", "( @ 0 "], answer: "A" } ], level3: [ { question: "( ? . M ( 2 ?  ? $ . G  8 G ' . 2 '  > * 0 M / > / 5 >  @  L ( 8 > ( 9 @  9 H ?", options: [" 2  ", "*    ", "0 >  @ 5 ", "  & M 0 "], answer: "D" } ] }; // 5 ? 2 K . 6 , M & questions["5 ? 2 K . 6 , M & "] = { level1: [ { question: "' 2 K  '  > 5 ? 2 K . 6 , M &  M / > 9 H ?", options: ["  '  > 0 ", "* M 0  > 6 ", "  > 2 > ", "& @ * M $ ? "], answer: "A" }, { question: "'& / > '  > 5 ? 2 K . 6 , M & 9 H :", options: ["( ? 0 M & / $ > ", "* M 0 G . ", " 0 A # > ", " ( A   * > "], answer: "A" } ], level2: [ { question: "'8 M % B 2 '  > 5 ? 2 K . 6 , M & 9 H :", options: ["8 B  M 7 M . ", ", ! < > ", ". K  > ", "- > 0 @ "], answer: "A" } ], level3: [ { question: "' *  @ 0 M $ ? '  >  ? $ 5 ? 2 K . 6 , M & 9 H :", options: ["/ 6 ", ", & ( > . @ ", " * . > ( ", " 5  A # "], answer: "A" } ] }; // 8   M  >  5  - G & questions["8   M  >  5  8  G - G & "] = { level1: [ { question: "( ? . M ( 2 ?  ? $ . G  8 G  L ( 8 > 5 M /  M $ ? 5 >   8   M  >  > & > 9 0 # 9 H ?", options: ["0 > . ", "2 ! <  > ", "6 9 0 ", "* 9 > ! < "], answer: "A" } ], level2: [ { question: "'. ? > 8 '  ? 8 * M 0  > 0  @ 8   M  > 9 H ?", options: ["- > 5 5 >   ", "5 M /  M $ ? 5 >   ", " > $ ? 5 >   ", "& M 0 5 M / 5 >   "], answer: "A" } ] }; // 8  ' ? questions["8  ' ? "] = { level1: [ { question: "'8 B 0 M / K & / ' . G   L ( 8 @ 8  ' ? 9 H ?", options: [" A # 8  ' ? ", "& @ 0 M  8  ' ? ", "5 C & M ' ? 8  ' ? ", "/ # 8  ' ? "], answer: "C" }, { question: "'& G 5 0 M 7 ? '  > 8  ' ? 5 ?  M  G &  M / > 9 H ?", options: ["& G 5 + 7 ? ", "& G 5 > + 7 ? ", "& G 5 + 7 ? ( A # )", "& G 5 + 7 ? (5 C & M ' ? )"], answer: "A" } ], level2: [ { question: "'( 0 8 ?  9 ' . G   L ( 8 @ 8  ' ? 9 H ?", options: [" A # ", "& @ 0 M  ", "5 C & M ' ? ", "/ # "], answer: "B" } ], level3: [ { question: "'  H  ' . G   ? 8 8  ' ?  > * M 0 / K  9 A  9 H ?", options: ["5 C & M ' ? ", " A # ", "/ # ", "* B 0 M 5 0 B * "], answer: "A" } ] }; // 8 . > 8 questions["8 . > 8 "] = { level1: [ { question: "'$ M 0 ? - A 5 ( ' . G   L ( 8 > 8 . > 8 9 H ?", options: ["& M 5 ?  A 8 . > 8 ", " 0 M . ' > 0 / ", "& M 5  & M 5 ", "$ $ M * A 0 A 7 "], answer: "A" }, { question: "'   >  2 ' . G   L ( 8 > 8 . > 8 9 H ?", options: ["$ $ M * A 0 A 7 ", " 0 M . ' > 0 / ", "& M 5  & M 5 ", ", 9 A 5 M 0 @ 9 ? "], answer: "A" } ], level2: [ { question: "'* @ $ >  , 0 '  > 8 . > 8 5 ?  M 0 9  M / > 9 K  > ?", options: ["* @ $ 9 H  K   , 0 ", "* @ $   , 0 ", "* @ $  G 8 . > (   , 0 ", "* @ $  0   , 0 "], answer: "A" } ], level3: [ { question: "'  M 0 * > # ? ' . G   L ( 8 > 8 . > 8 9 H ?", options: [", 9 A 5 M 0 @ 9 ? ", "$ $ M * A 0 A 7 ", "& M 5 ?  A ", "& M 5  & M 5 "], answer: "A" } ] }; //  M 0 ? / > - G & questions[" M 0 ? / >  5  8  G - G & "] = { level1: [ { question: "'0 > . * " < $ > 9 H ' - 5 >  M / . G   M 0 ? / >  L ( 8 @ 9 H ?", options: ["* " < $ > 9 H ", "0 > . ", "9 H ", "* " < "], answer: "A" }, { question: "'8 K ( > '  ? 8 * M 0  > 0  @  M 0 ? / > 9 H ?", options: ["  0 M .  ", "8  0 M .  ", "* M 0 G 0 # > 0 M %  ", "8  / A  M $ "], answer: "A" } ], level2: [ { question: "( ? . M ( 2 ?  ? $ . G   0 M . 5 >  M /  > & > 9 0 # 9 H :", options: ["0 > . & M 5 > 0 > - K  (  ? / >  > $ > 9 H ", "0 > . - K  (  0 $ > 9 H ", "0 > .  > $ > 9 H ", "0 > . 8 G  > / >  > $ > 9 H "], answer: "A" } ] }; // . A 9 > 5 0 G  5  2 K  K  M $ ? / >  questions["2 K  K  M $ ? / >   5  . A 9 > 5 0 K   G  0 M % "] = { level1: [ { question: "' * ( @  ?  ! < @  2  *  > ( > ' . A 9 > 5 0 G  >  0 M %  M / > 9 H ?", options: [" 2  0 9 ( > ", "& B 8 0 K   @ (  2  0 ( > ", "8 M 5 $  $ M 0 5 ?  > 0 0  ( > ", " * ( >  > . 8 M 5 /   0 ( > "], answer: "A" }, { question: "' H 8 G  K $ H 8 > ' 2 K  K  M $ ?  >  0 M % 9 H :", options: [" H 8 >  0 K  G 5 H 8 > - 0 K  G ", ", & 2 > 2 G ( > ", "( M / > /  0 ( > ", "8 . > ( $ > "], answer: "A" } ], level2: [ { question: "' @  G & @ / G  2 > ( > '  >  0 M % 9 H :", options: ["* M 0 8 ( M ( $ > . ( > ( > ", ", 9 A $  A 6 9 K ( > ", ", 0 M , > &  0 ( > ", "* M 0  > 6 + H 2 > ( > "], answer: "A" } ] }; // 5 0 M $ ( @ questions["5 0 M $ ( @ "] = { level1: [ { question: "'6 M 0 & M ' > ' 6 , M &  > 6 A & M ' 0 B *  M / > 9 H ?", options: ["6 M 0 & M ' > ", "8 M 0 & M ' > ", "6 M 0 ' > ", "6 M 0 & > "], answer: "A" }, { question: "'  M  M 5 2 ' 6 , M & . G   L ( 8 > 5 M /   ( 8  / K  9 H ?", options: [" M  ", " M  M 5 ", " M 5 ", "  M  "], answer: "B" } ], level2: [ { question: "( ? . M ( 2 ?  ? $ . G  8 G  L ( 8 > 6 , M & 6 A & M ' 9 H ?", options: [" 0 K  M / ", " 0 K  M / ", " 0 K  M / ", " 0 K  M / "], answer: "A" } ], level3: [ { question: "( ? . M ( 2 ?  ? $ . G  8 G  L ( 8 > 6 , M & 6 A & M ' 9 H ?", options: ["& A 0 A 8 M $ ", "& A 0 B 8 M $ ", "& A 0 A 8 $ ", "& A 0 B 8 $ "], answer: "A" } ] }; //  > 2 questions[" > 2 "] = { level1: [ { question: "'0 > . * A 8 M $  * " < G  > ' . G   > 2 9 H :", options: ["- 5 ? 7 M / $ M ", "5 0 M $ . > ( ", "- B $ ", " * B 0 M # - B $ "], answer: "A" } ], level2: [ { question: "'5 9 8 K 0 9 > % > ' 5 >  M / . G   > 2 , $ >   :", options: [" * B 0 M # - B $ ", "* B 0 M # - B $ ", "8 > . > ( M / - B $ ", " 8 ( M ( - B $ "], answer: "A" } ] }; //  2   > 0 questions[" 2   > 0 "] = { level1: [ { question: "'. A    & M 0 8 . > ( 9 H ' . G   L ( 8 >  2   > 0 9 H ?", options: [" * . > ", "0 B *  ", " $ M * M 0 G  M 7 > ", "& @ *  "], answer: "A" }, { question: "'0 > . -0 > . ' . G   L ( 8 >  2   > 0 9 H ?", options: [" ( A * M 0 > 8 ", "/ .  ", "6 M 2 G 7 ", " * . > "], answer: "B" } ], level2: [ { question: "'8 >  0 -8 >   - @ 0 9 C & / ' . G   L ( 8 >  2   > 0 9 H ?", options: [" * . > ", "0 B *  ", " $ M * M 0 G  M 7 > ", "& C 7 M  >  $ "], answer: "A" } ], level3: [ { question: "', @ 0 0 8 '  > 8 M % > / @ - > 5  M / > 9 H ?", options: [" $ M 8 > 9 ", "0 $ ? ", "9 > 8 ", "6 K  "], answer: "A" } ] }; // 6 G 7  ' M / > / K   G 2 ?  ! ? + < I 2 M  * M 0 6 M ( (8 - @ 31  ' M / > /  5 0 ) for (let i = 0; i < chaptersList.length; i++) { const chap = chaptersList[i]; if (!questions[chap]) { questions[chap] = { level1: [ { question: `${chap}  G 8  & 0 M - . G  9 ? ( M & @ - > 7 >  > . B 2 - B $ ( ? / .  M / > 9 H ?`, options: ["5 M / >  0 # ?  6 A & M ' $ > ", " 6 A & M ' 5 0 M $ ( @ ", " * ? $  > 5 M / ", " 2   > 0  $ M / ' ?  "], answer: "A" }, { question: `UP TET * 0 @  M 7 > . G  ${chap} 8 G 8  ,  ' ? $ * M 0 6 M (  ? 8 * M 0  > 0 * B  G  > $ G 9 H  ?`, options: ["* M 0 / K  > $ M .   5  , K ' > $ M .  ", " G 5 2 * 0 ? - > 7 >   ", " G 5 2 0  ( G 5 > 2 G ", "5 ? 2 K . . > $ M 0 "], answer: "A" } ], level2: [ { question: `${chap}  G * M 0 - > 5 @ 6 ?  M 7 #  G 2 ?  8 , 8 G * / A  M $ 5 ? ' ? 9 H ?`, options: [" & > 9 0 #  5   - M / > 8 ", "8 M 5 $  $ M 0  ' M / / ( ", "  8 M % @  0 # ", "* M 0 6 M ( K $ M $ 0 @ . > $ M 0 "], answer: "A" } ], level3: [ { question: `${chap} . G  5 ? 6 M 2 G 7 # > $ M .  * M 0 6 M ( K   K 9 2  0 ( G  @  A   @  M / > 9 H ?`, options: ["- > 7 >  8  0  ( > 8 .  ", "0  ( > ", " ( A . > ( 2  > ( > ", " I * @  0 ( > "], answer: "A" } ] }; } } const finalTopicList = chaptersList; let selectedTopics = []; let selectedLevel = null; let userProgress = { streak: 0, lastPracticeDate: null, totalProblemsSolved: 0, topicsCompleted: 0, totalTopics: finalTopicList.length }; function loadUserProgress() { const saved = localStorage.getItem('upTetHindiProgress'); if (saved) userProgress = JSON.parse(saved); const today = new Date().toDateString(); if (userProgress.lastPracticeDate !== today) { const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1); if (userProgress.lastPracticeDate === yesterday.toDateString()) userProgress.streak++; else userProgress.streak = 1; userProgress.lastPracticeDate = today; saveUserProgress(); } updateUI(); } function saveUserProgress() { localStorage.setItem('upTetHindiProgress', JSON.stringify(userProgress)); } function updateUI() { document.getElementById('streakDays').textContent = userProgress.streak; const today = new Date(); document.getElementById('currentDate').textContent = today.toLocaleDateString('hi-IN', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); const percent = Math.min(100, Math.round((userProgress.topicsCompleted / userProgress.totalTopics) * 100)); document.getElementById('progressFill').style.width = `${percent}%`; document.getElementById('progressText').textContent = `${percent}% * B 0 M # (${userProgress.topicsCompleted}/${userProgress.totalTopics}  ' M / > / )`; } function getRandomQuestions(topicsArray, level, count) { let allQs = []; topicsArray.forEach(topic => { if (questions[topic] && questions[topic][`level${level}`]) { allQs = allQs.concat(questions[topic][`level${level}`]); } }); if(allQs.length === 0) return [{ question: "9 ? ( M & @ - > 7 >  @ . B 2 - B $ 5 ? 6 G 7 $ >  M / > 9 H ?", options: ["5 H  M  > ( ?  $ >  5  2  @ 2 > * ( ", " K 0 $ > ", "8 @ . ? $ 6 , M & > 5 2 @ ", " * 0 ? 5 0 M $ ( 6 @ 2 $ > "], answer: "A" }]; allQs = allQs.sort(() => Math.random() - 0.5); return allQs.slice(0, count); } function renderTopics() { const container = document.getElementById('topicsContainer'); container.innerHTML = `<div class="checkbox-item" style="background:#e9f5ec;"><input type="checkbox" id="fullSyllabus" value="full"><label for="fullSyllabus"><strong>' 8  * B 0 M # * > M /  M 0 . (8 - @ 31  ' M / > / )</strong></label></div>`; finalTopicList.forEach(topic => { const id = `topic_${topic.replace(/[\s,?]/g, '_').substring(0, 30)}`; container.innerHTML += `<div class="checkbox-item"><input type="checkbox" id="${id}" name="topic" value="${topic}"><label for="${id}">${topic}</label></div>`; }); document.getElementById('fullSyllabus')?.addEventListener('change', (e) => { const allCheckboxes = document.querySelectorAll('input[name="topic"]'); allCheckboxes.forEach(cb => cb.disabled = e.target.checked); if(e.target.checked) allCheckboxes.forEach(cb => cb.checked = false); }); } // Event listeners document.getElementById('customPracticeBtn').addEventListener('click', () => { startScreen.classList.add('hidden'); subjectSelection.classList.remove('hidden'); }); document.getElementById('selectHindiBtn').addEventListener('click', () => { renderTopics(); subjectSelection.classList.add('hidden'); topicSelection.classList.remove('hidden'); }); document.getElementById('backToStartBtn').addEventListener('click', () => { topicSelection.classList.add('hidden'); startContainer.classList.remove('hidden'); startScreen.classList.remove('hidden'); updateUI(); }); document.getElementById('generateAssignmentBtn').addEventListener('click', () => { const full = document.getElementById('fullSyllabus')?.checked; if (full) selectedTopics = [...finalTopicList]; else selectedTopics = Array.from(document.querySelectorAll('input[name="topic"]:checked')).map(cb => cb.value); if (selectedTopics.length === 0) { alert(" C * / >  . 8 G  .    ' M / > /  A ( G  !"); return; } topicSelection.classList.add('hidden'); levelSelection.classList.remove('hidden'); }); document.getElementById('backToTopicsBtn').addEventListener('click', () => { levelSelection.classList.add('hidden'); topicSelection.classList.remove('hidden'); }); document.getElementById('level1Btn').addEventListener('click', () => { document.querySelectorAll('.btn-level').forEach(b => b.classList.remove('selected')); document.getElementById('level1Btn').classList.add('selected'); selectedLevel = 1; }); document.getElementById('level2Btn').addEventListener('click', () => { document.querySelectorAll('.btn-level').forEach(b => b.classList.remove('selected')); document.getElementById('level2Btn').classList.add('selected'); selectedLevel = 2; }); document.getElementById('level3Btn').addEventListener('click', () => { document.querySelectorAll('.btn-level').forEach(b => b.classList.remove('selected')); document.getElementById('level3Btn').classList.add('selected'); selectedLevel = 3; }); document.getElementById('generateFinalBtn').addEventListener('click', () => { if (!selectedLevel) { alert(" C * / >  ? ( >  8 M $ 0  A ( G  !"); return; } generateAssignment(); }); document.getElementById('homeIconBtn').addEventListener('click', (e) => { e.preventDefault(); backToStart(); }); document.getElementById('problemOfDayBtn').addEventListener('click', generateProblemOfDay); function generateAssignment() { startContainer.classList.add('hidden'); levelSelection.classList.add('hidden'); generatedPaperContainer.classList.remove('hidden'); const topicNames = selectedTopics.length > 5 ? selectedTopics.slice(0,5).join(", ")+" ..." : selectedTopics.join(", "); const mcqs = getRandomQuestions(selectedTopics, selectedLevel, 10); let paperContent = ` <div class="header"><h2>=ØØÜ UP TET * G * 0 -1 (- > 7 > * M 0 % .  9 ? ( M & @ )</h2><h3>=ØÌÜ ${selectedTopics.length === finalTopicList.length ? "8  * B 0 M # * > M /  M 0 . (31  ' M / > / )" : topicNames.substring(0, 85)}</h3><p>¡&  ? ( >  8 M $ 0 ${selectedLevel}  ${selectedLevel === 1 ? ", G 8 ?  " : selectedLevel === 2 ? ". ' M / . (UP TET . > (  )" : " ( M ( $ "}</p></div> <div class="content-area"><div class="instructions"><p><strong>( ? 0 M & G 6 :</strong></p><ol><li>10 , 9 A 5 ?  2 M * @ * M 0 6 M ( , * M 0 $ M / G  9 ? ( M & @ 5 M / >  0 # /- > 7 >  M 7 . $ > * 0  ' > 0 ? $ d </li><li>15 . ? (  . G  9 2  0 G  , $ M $ 0  A   @ 8 G . ? 2 >   d </li></ol></div> <div class="question-section"><div style="font-size:1.4rem; margin-bottom:20px; font-weight:bold;">'þ  - M / > 8 * M 0 6 M ( </div>`; let qNum = 1; mcqs.forEach(mcq => { paperContent += `<div class="question"><div class="question-text">${qNum}. ${mcq.question}</div> <div class="option">A. ${mcq.options[0]}</div><div class="option">B. ${mcq.options[1]}</div> <div class="option">C. ${mcq.options[2]}</div><div class="option">D. ${mcq.options[3]}</div></div>`; qNum++; }); paperContent += `</div><div class="answer-sheet"><h3 class="section-title">=ØÝ $ M $ 0  A   @ </h3><table class="answer-table"><thead><tr><th>* M 0 6 M ( 8  .</th><th> $ M $ 0 </th><th>* M 0 6 M ( 8  .</th><th> $ M $ 0 </th></tr></thead><tbody>`; for (let i = 0; i < mcqs.length; i += 2) { paperContent += `<tr><td>${i+1}</td><td><strong>${mcqs[i].answer}</strong></td>`; if (i+1 < mcqs.length) paperContent += `<td>${i+2}</td><td><strong>${mcqs[i+1].answer}</strong></td>`; else paperContent += `<td></td><td></td>`; paperContent += `</tr>`; } paperContent += `</tbody></table></div><div class="action-buttons"><button class="btn btn-success" id="markCompleteBtn"><i class="fas fa-check-circle"></i> * B 0 M #  ? 9 M ( ? $  0 G  </button><button class="btn btn-primary" id="printBtn"><i class="fas fa-print"></i> * M 0 ?   / PDF</button><button class="btn btn-danger" id="newAssignmentBtn"><i class="fas fa-undo-alt"></i> ( / >  - M / > 8 </button></div></div>`; generatedPaperContainer.innerHTML = paperContent; document.getElementById('markCompleteBtn')?.addEventListener('click', markPracticeComplete); document.getElementById('printBtn')?.addEventListener('click', () => window.print()); document.getElementById('newAssignmentBtn')?.addEventListener('click', backToStart); } function markPracticeComplete() { userProgress.totalProblemsSolved += 10; let newlyCompleted = 0; selectedTopics.forEach(t => { if (!userProgress[`comp_${t}`]) { userProgress[`comp_${t}`] = true; newlyCompleted++; } }); userProgress.topicsCompleted = Math.min(userProgress.totalTopics, userProgress.topicsCompleted + newlyCompleted); saveUserProgress(); updateUI(); alert("<Ø‰ß 6 > ( & > 0 !  - M / > 8 * B 0 M # 9 A  d * M 0  $ ? 8 9 G  @   d "); backToStart(); } function generateProblemOfDay() { const randomTopic = finalTopicList[Math.floor(Math.random() * finalTopicList.length)]; const randomLevel = Math.floor(Math.random() * 3) + 1; selectedTopics = [randomTopic]; selectedLevel = randomLevel; startContainer.classList.add('hidden'); generatedPaperContainer.classList.remove('hidden'); const mcq = getRandomQuestions(selectedTopics, selectedLevel, 1)[0]; let content = `<div class="header"><h2><Øß & ? (  @  A ( L $ @ (9 ? ( M & @ )</h2><h3><Ø¯ß ${randomTopic}</h3><p>8 M $ 0 ${randomLevel}</p></div><div class="content-area"><div class="problem-of-day"><h3><i class="fas fa-star-of-life"></i>    >  - M / > 8 * M 0 6 M ( </h3><p> * ( @ - > 7 > &  M 7 $ > , " < >   !</p></div><div class="daily-summary"><div class="summary-card"><h4>=Ø%Ý 2  > $ > 0 </h4><p>${userProgress.streak} & ? ( </p></div><div class="summary-card"><h4>' 9 2 * M 0 6 M ( </h4><p>${userProgress.totalProblemsSolved}</p></div><div class="summary-card"><h4>=ØÚÜ * M 0  $ ? </h4><p>${Math.round((userProgress.topicsCompleted / userProgress.totalTopics) * 100)}%</p></div></div><div class="question"><div class="question-text">${mcq.question}</div><div class="option">A. ${mcq.options[0]}</div><div class="option">B. ${mcq.options[1]}</div><div class="option">C. ${mcq.options[2]}</div><div class="option">D. ${mcq.options[3]}</div></div><div class="answer-sheet"><h3>=ØÌÜ 8 . > ' > ( </h3><p><strong>8 9 @ $ M $ 0 :</strong> ${mcq.answer}</p><p><strong>5 M / >  M / > :</strong> UP TET 9 ? ( M & @  5 ' > 0 # >  G  ( A 8 > 0 </p></div><div class="action-buttons"><button class="btn btn-success" id="markCompleteDailyBtn"><i class="fas fa-check"></i> * B 0 M #  ? / > </button><button class="btn btn-primary" id="printBtn">* M 0 ?    0 G  </button><button class="btn btn-danger" id="newAssignmentBtn">( / >  - M / > 8 </button></div></div>`; generatedPaperContainer.innerHTML = content; document.getElementById('markCompleteDailyBtn')?.addEventListener('click', () => { userProgress.totalProblemsSolved++; saveUserProgress(); updateUI(); alert(", ' >  9 K ! & ? (  @ 8 . 8 M / > 9 2 9 A  d "); backToStart(); }); document.getElementById('printBtn')?.addEventListener('click', () => window.print()); document.getElementById('newAssignmentBtn')?.addEventListener('click', backToStart); } function backToStart() { generatedPaperContainer.classList.add('hidden'); startContainer.classList.remove('hidden'); topicSelection.classList.add('hidden'); levelSelection.classList.add('hidden'); subjectSelection.classList.add('hidden'); startScreen.classList.remove('hidden'); updateUI(); } document.addEventListener('DOMContentLoaded', () => { loadUserProgress(); }); </script> </body> </html>