ÿþ<!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 2 -  # ? $ (Mathematics)  8 >  ( . G    ( 0 G  0 </title> <link href="img/logo1.jpg" 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: #1e6f5c; --primary-dark: #135a4a; --secondary: #289672; --danger: #e5533b; --success: #2c7da0; --light: #eefbfb; --dark: #2c3e50; --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', Tahoma, Geneva, Verdana, sans-serif; } body { background: linear-gradient(135deg, #e0f2f1 0%, #b2dfdb 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: 950px; 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; top: -50px; right: -50px; width: 150px; height: 150px; background: rgba(255, 255, 255, 0.1); border-radius: 50%; } .header h1 { font-size: 2rem; margin-bottom: 10px; font-weight: 700; position: relative; z-index: 1; } .header p { font-size: 1rem; opacity: 0.9; position: relative; z-index: 1; } .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); box-shadow: 0 8px 15px rgba(30, 111, 92, 0.3); } .btn-success { background: var(--success); color: white; } .btn-success:hover { background: #1f5e7a; transform: translateY(-2px); } .btn-danger { background: var(--danger); color: white; } .btn-danger:hover { background: #c53a1f; transform: translateY(-2px); } .btn-level { background: var(--light); color: var(--dark); border: 2px solid var(--gray); font-size: 1.2rem; padding: 15px 30px; 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: 10px; margin: 20px 0; } .level-buttons { display: flex; justify-content: center; gap: 20px; margin: 30px 0; } .section-title { text-align: center; margin-bottom: 25px; color: var(--primary-dark); font-size: 1.5rem; position: relative; padding-bottom: 10px; } .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(280px, 1fr)); gap: 12px; margin: 25px 0; max-height: 500px; overflow-y: auto; padding: 10px; border: 1px solid #eee; border-radius: var(--border-radius); } .checkbox-item { display: flex; align-items: center; } .checkbox-item input { margin-right: 10px; width: 18px; height: 18px; cursor: pointer; } .checkbox-item label { cursor: pointer; font-size: 0.9rem; } .instructions { margin-bottom: 30px; padding: 20px; background: #f8f9fa; border-radius: var(--border-radius); } .instructions ol { padding-left: 20px; margin-top: 10px; } .instructions li { margin-bottom: 8px; } .question-section { margin-bottom: 30px; } .section-heading { font-weight: 600; color: var(--primary-dark); margin-bottom: 15px; padding-bottom: 5px; border-bottom: 1px solid #eee; } .question { margin-bottom: 20px; page-break-inside: avoid; } .question-text { font-weight: 500; margin-bottom: 8px; } .option { margin-left: 20px; margin-bottom: 5px; } .action-buttons { display: flex; justify-content: center; flex-wrap: wrap; gap: 15px; margin-top: 40px; } .answer-sheet { margin-top: 40px; padding: 20px; background: #f8f9fa; border-radius: var(--border-radius); } .answer-table { width: 100%; border-collapse: collapse; margin-top: 15px; } .answer-table th, .answer-table td { border: 1px solid #ddd; padding: 8px; text-align: center; } .answer-table th { background-color: var(--primary); color: white; } .answer-table tr:nth-child(even) { background-color: #f2f2f2; } @media (max-width: 768px) { .header h1 { font-size: 1.6rem; } .content-area { padding: 20px; } .checkbox-container { grid-template-columns: 1fr; } .btn { padding: 10px 20px; font-size: 0.9rem; } .btn-level { width: 150px; font-size: 1rem; padding: 12px 20px; } .level-buttons { flex-direction: column; align-items: center; } } @media (max-width: 480px) { .header { padding: 20px 15px; } .section-title { font-size: 1.3rem; } .action-buttons { flex-direction: column; align-items: center; } .btn { width: 100%; max-width: 250px; } } @media print { body { background: none; padding: 0; } .container { box-shadow: none; max-width: 100%; } .action-buttons { display: none; } .question { page-break-inside: avoid; } .header { -webkit-print-color-adjust: exact; print-color-adjust: exact; } } .home-icon { position: absolute; top: 20px; left: 20px; color: white; font-size: 24px; cursor: pointer; transition: var(--transition); z-index: 2; text-decoration: none; display: inline-block; } .home-icon:hover { transform: scale(1.1); color: rgba(255, 255, 255, 0.8); } @media (max-width: 480px) { .home-icon { font-size: 20px; top: 15px; left: 15px; } } @media print { .home-icon { display: none; } } .temp-pdf-container { font-family: Arial, sans-serif; line-height: 1.5; width: 794px; background-color: white; color: black; } .question { page-break-inside: avoid; break-inside: avoid; } .text-center { text-align: center; margin-bottom: 15px; } </style> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4930137336556867" crossorigin="anonymous"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-KMZ9RJ62EY"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-KMZ9RJ62EY'); </script> </head> <body> <div class="container" id="startContainer"> <div class="header"> <a href="up-tet-exam-paper2-assignment-generator.html" class="home-icon" ><i class="fas fa-home"></i></a> <h1>UP TET * G * 0 2 -  # ? $ (Mathematics)</h1> <p> # ? $ 6 ?  M 7 #  5   - M / > 8  8 >  ( . G    ( 0 G  0 </p> </div> <div class="content-area"> <div id="startScreen"> <h2 class="section-title"> # ? $  8 >  ( . G    ( 0 G  0 </h2> <div class="btn-group"> <button class="btn btn-primary" id="startGeneratingBtn"> 8 >  ( . G   , ( >   </button> </div> </div> <div id="subjectSelection" class="hidden"> <h2 class="section-title">5 ? 7 /  >  / (  0 G  </h2> <div class="btn-group"> <button class="btn btn-primary" id="selectMathBtn"> # ? $ (Mathematics - TET Paper 2)</button> </div> </div> <div id="chapterSelection" class="hidden"> <h2 class="section-title">  >  /  ' M / > /  A ( G  </h2> <div id="chapterCheckboxContainer" class="checkbox-container"></div> <div class="btn-group"> <button class="btn btn-danger" id="backToStartBtn">* M 0 > 0  - * 0 5 > * 8  >   </button> <button class="btn btn-success" id="generateAssignmentBtn"> 8 >  ( . G   , ( >   </button> </div> </div> <div id="levelSelection" class="hidden"> <h2 class="section-title"> ? ( >  8 M $ 0  A ( G  </h2> <p class="text-center"> * ( G  8 >  ( . G    G 2 ?  8 M $ 0  >  / (  0 G  :</p> <div class="level-buttons"> <button class="btn btn-level" id="level1Btn">8 M $ 0 1<br><small>, G 8 ?  8 M $ 0 </small></button> <button class="btn btn-level" id="level2Btn">8 M $ 0 2<br><small>. ' M / . 8 M $ 0 </small></button> <button class="btn btn-level" id="level3Btn">8 M $ 0 3<br><small>* 0 @  M 7 > 8 M $ 0 </small></button> </div> <div class="btn-group"> <button class="btn btn-danger" id="backToChaptersBtn">5 ? 7 / K  * 0 5 > * 8  >   </button> <button class="btn btn-success" id="generateFinalBtn"> 8 >  ( . G    ( 0 G   0 G  </button> </div> </div> </div> </div> <div class="container hidden" id="generatedPaperContainer"></div> <script> (function() { const { jsPDF } = window.jspdf; // Complete Mathematics Question Bank for 20 Topics as per UP TET Paper 2 const questions = { "1. * M 0 >  C $ ?  8   M / >   , * B 0 M # 8   M / >   , * 0 ? . G / 8   M / >   ": { level1: [{ question: "8 , 8 G  K  @ * M 0 >  C $ ?  8   M / >  L ( 8 @ 9 H ?", options: ["1", "0", "2", " K  ( 9 @  "], answer: "A" }, { question: "* 0 ? . G / 8   M / >  ? 8 G  9 $ G 9 H  ?", options: ["p/q  G 0 B *  @ 8   M / > ", " * 0 ? . G / 8   M / > ", " G 5 2 * B 0 M # >   ", "& 6 . 2 5 8   M / > "], answer: "A" }], level2: [{ question: "0.666...  K * 0 ? . G / 8   M / >  G 0 B * . G  2 ?  G  :", options: ["2/3", "3/2", "1/3", "4/5"], answer: "A" }], level3: [{ question: ""2  ? 8 * M 0  > 0  @ 8   M / > 9 H ?", options: [" * 0 ? . G / ", "* 0 ? . G / ", "* M 0 >  C $ ?  ", "* B 0 M # "], answer: "A" }] }, "2. * B 0 M # >   ,  K 7 M  , 2  A $ . 8 . > * 5 0 M $ M /  5  . 9 $ M $ . 8 . > * 5 0 M $  ": { level1: [{ question: "12  0 18  > . .8 .* . (HCF)  M  > $  @  ?  :", options: ["6", "3", "9", "12"], answer: "A" }, { question: "15  0 20  > 2 .8 .* . (LCM) 9 H :", options: ["60", "30", "45", "50"], answer: "A" }], level2: [{ question: "(-5) + 7 - (-3)  > . > ( 9 H :", options: ["5", "9", "-1", "1"], answer: "A" }], level3: [{ question: "& K 8   M / >    > LCM 72  0 HCF 12 9 H d / & ?   8   M / > 24 9 H , $ K & B 8 0 @ 8   M / >  M  > $  0 G  :", options: ["36", "24", "48", "60"], answer: "A" }] }, "3. 5 0 M  . B 2 ": { level1: [{ question: "144  > 5 0 M  . B 2  M / > 9 H ?", options: ["12", "14", "16", "18"], answer: "A" }], level2: [{ question: ""(625) + "(169)  > . > ( 9 H :", options: ["38", "32", "36", "40"], answer: "A" }], level3: [{ question: "/ & ? "(x) = 15, $ K x  > . > (  M / > 9 H ?", options: ["225", "125", "200", "250"], answer: "A" }] }, "4.  ( . B 2 ": { level1: [{ question: "216  >  ( . B 2  M / > 9 H ?", options: ["6", "8", "4", "10"], answer: "A" }], level2: [{ question: ""512  > . > ( 9 H :", options: ["8", "6", "12", "10"], answer: "A" }], level3: [{ question: "/ & ? "x = 5, $ K x = ?", options: ["125", "25", "625", "75"], answer: "A" }] }, "5. 8 0 M 5 8 . ?  >   ": { level1: [{ question: "(a+b)²  > 5 ? 8 M $ > 0  M / > 9 H ?", options: ["a²+2ab+b²", "a²+b²", "a²-2ab+b²", "2ab"], answer: "A" }], level2: [{ question: "a² - b²  ? 8  G , 0 > , 0 9 H ?", options: ["(a-b)(a+b)", "(a-b)²", "(a+b)²", "a²+b²"], answer: "A" }], level3: [{ question: "(x+3)(x-3)  > . > ( 9 H :", options: ["x²-9", "x²+9", "x²-6x+9", "x²+6x+9"], answer: "A" }] }, "6. , @   # ? $   0 8   M / >   ,   0 8   M / >   ,  0 8   M / >    @  > $ ": { level1: [{ question: ", @  @ / 5 M /    3x + 4 . G   0  M / > 9 H ?", options: ["x", "3", "4", "+"], answer: "A" }], level2: [{ question: "5x² . G  x  @  > $  M / > 9 H ?", options: ["2", "1", "3", "5"], answer: "A" }], level3: [{ question: "  0 8   M / >  > & > 9 0 # 9 H :", options: ["7", "x", "y", "2a"], answer: "A" }] }, "7. , @  @ / 5 M /    K   >  K ! < ,   > ( > ,  A # >  5  - >  ": { level1: [{ question: "(3x + 2y) + (4x - y) = ?", options: ["7x + y", "7x + 3y", "12x - 2y", "x + y"], answer: "A" }], level2: [{ question: "8  > $ @ / * &  ? 8 G  9 $ G 9 H  ?", options: ["8 . > (  0 5 > 2 G * & ", "- ? ( M (  0 5 > 2 G ", "  0 * & ", ", 9 A * & "], answer: "A" }], level3: [{ question: "& M 5 ? * & @ / 5 M /     > & > 9 0 # 9 H :", options: ["x + y", "x + y + z", "3x", "x²"], answer: "A" }] }, "8. / A  * $ 8 . @  0 # , 5 0 M  8 . @  0 # , 0 G  @ / 8 . @  0 # ": { level1: [{ question: "/ & ? x + y = 10  0 x - y = 4, $ K x  > . > ( 9 H :", options: ["7", "3", "6", "5"], answer: "A" }], level2: [{ question: "5 0 M  8 . @  0 # x² - 5x + 6 = 0  G . B 2 9 H  :", options: ["2,3", "1,6", "-2,-3", "2,-3"], answer: "A" }], level3: [{ question: "0 G  @ / 8 . @  0 # 2x + 3 = 7  > 9 2 9 H :", options: ["x = 2", "x = 5", "x = 1", "x = 4"], answer: "A" }] }, "9. 8 . > ( M $ 0 0 G  >   ,  $ A 0 M - A   @ 0  ( > , $ M 0 ? - A  ": { level1: [{ question: "8 . > ( M $ 0 0 G  >    G , @   @ & B 0 @ 9 . G 6 >  M / > 9 K $ @ 9 H ?", options: ["8 . > ( ", ", & 2 $ @ ", "6 B ( M / ", " (  $ "], answer: "A" }], level2: [{ question: "$ M 0 ? - A   G $ @ ( K   K # K   > / K  9 K $ > 9 H :", options: ["180°", "90°", "360°", "270°"], answer: "A" }], level3: [{ question: " $ A 0 M - A   G 5 ?  0 M #   & B 8 0 G  K 8 . & M 5 ? - >  ? $  0 $ G 9 H  , / 9  A #  ? 8  $ A 0 M - A   > 9 H ?", options: ["8 . >  $ 0  $ A 0 M - A  ", "8 . 2 . M , ", "* $   ", "5 ? 7 .  K # "], answer: "A" }] }, "10. 5 C $ M $  0   M 0 @ /  $ A 0 M - A  ": { level1: [{ question: "5 C $ M $  @ $ M 0 ?  M / >  ? 8 G  9 $ G 9 H  ?", options: [" G  & M 0 8 G * 0 ? ' ? $   @ & B 0 @ ", "5 M / > 8 ", "* 0 ? ' ? ", " @ 5 > "], answer: "A" }], level2: [{ question: "  M 0 @ /  $ A 0 M - A   G 8 . M . A   K # K   > / K  9 K $ > 9 H :", options: ["180°", "90°", "360°", "270°"], answer: "A" }], level3: [{ question: "5 C $ M $  G  ? 8 @ , ?  & A * 0 8 M * 0 M 6 0 G  > $ M 0 ?  M / > 8 G  ? $ ( G ! ?  M 0 @  >  K # , ( > $ @ 9 H ?", options: ["90°", "45°", "60°", "30°"], answer: "A" }] }, "11. 5 C $ M $  @ 8 M * 0 M 6 0 G  >   ": { level1: [{ question: "8 M * 0 M 6 0 G  > 5 C $ M $  K  ? $ ( G , ?  & A   * 0 8 M * 0 M 6  0 $ @ 9 H ?", options: ["  , ?  & A ", "& K , ?  & A ", " (  $ ", " K  ( 9 @  "], answer: "A" }], level2: [{ question: ", > 9 M / , ?  & A 8 G 5 C $ M $ * 0  ? $ ( @ 8 M * 0 M 6 0 G  >    @   @  > 8  $ @ 9 H  ?", options: ["& K ", "  ", "$ @ ( ", " (  $ "], answer: "A" }], level3: [{ question: "8 M * 0 M 6 , ?  & A * 0 8 M * 0 M 6 0 G  > $ % > $ M 0 ?  M / >  G , @   >  K # 9 K $ > 9 H :", options: ["90°", "0°", "180°", "45°"], answer: "A" }] }, "12. 5 > # ?  M /  # ? $   ( A * > $ , 8 . > ( A * > $ , * M 0 $ ? 6 $ $ > , 2 > - -9 > ( ? , , M / >  ": { level1: [{ question: "45  > 20%  ? $ ( > 9 K $ > 9 H ?", options: ["9", "8", "10", "7"], answer: "A" }], level2: [{ question: "500 0 A * 0 2 5 0 M 7  > 10% 5 > 0 M 7 ?  8 > ' > 0 # , M / >   M / > 9 K  > ?", options: ["100 0 A ", "50 0 A ", "200 0 A ", "150 0 A "], answer: "A" }], level3: [{ question: " ? 8 @ 5 8 M $ A  K 600 0 A . G  , G  ( G * 0 20% 2 > - 9 K $ > 9 H d  M 0 / . B 2 M /  M / > 9 H ?", options: ["500 0 A ", "480 0 A ", "550 0 A ", "520 0 A "], answer: "A" }] }, "13. , H   ?    5 0 M $ . > ( . A & M 0 > , , ? 2 $ % >  G 6 . G  ": { level1: [{ question: "- > 0 $  @ . A & M 0 >  M / > 9 H ?", options: ["0 A * / > ", "! I 2 0 ", "/ B 0 K ", "* >  ! "], answer: "A" }], level2: [{ question: " G   M / > 9 K $ > 9 H ?", options: [", H    K - A  $ > (  >  & G 6 ", "(  & @ ", " M 0 G ! ?   > 0 M ! ", "! G , ?   > 0 M ! "], answer: "A" }], level3: [{ question: " G 6 . G  (Cash Memo)  ? 8 G  9 $ G 9 H  ?", options: [" 0 @ &  @ 0 8 @ & ", ", H   * > 8 , A  ", " G  , A  ", " . > * 0 M  @ "], answer: "A" }] }, "14. 8 >   M / ?  @     ! < K   > 5 0 M  @  0 # , . > ' M / , . > ' M / ?  >  5  , 9 A 2  ": { level1: [{ question: "2,4,6,8,10  > . > ' M /  M / > 9 H ?", options: ["6", "5", "7", "8"], answer: "A" }], level2: [{ question: "3,5,7,9,11  > . > ' M / ?  >  M / > 9 H ?", options: ["7", "5", "9", "8"], answer: "A" }], level3: [{ question: ", 9 A 2   ? 8 G  9 $ G 9 H  ?", options: ["8 , 8 G  ' ?  , > 0  ( G 5 > 2 @ 8   M / > ", " 8 $ ", ". ' M / 8   M / > ", "/ K  "], answer: "A" }] }, "15. * >   5  & # M !  > 0 M  ,  5  @  C $    ! < K   >  ? $ M 0 ": { level1: [{ question: "* >   > 0 M  . G   A 2 5 C $ M $  >  ? $ ( >  K # 9 K $ > 9 H ?", options: ["360°", "180°", "90°", "270°"], answer: "A" }], level2: [{ question: "& # M !  > 0 M  . G     ! < G  ? 8 0 B * . G  & 0 M 6 >   > $ G 9 H  ?", options: [" / $ >  > 0 & # M ! ", " K 2 >  > 0 ", "$ M 0 ?  K # ", ", ?  & A "], answer: "A" }], level3: [{ question: " 5  @  C $    ! < K   >  ? $ M 0 (Histogram)  ? 8  G 2 ?  * M 0 / K  9 K $ > 9 H ?", options: ["8 $ $    ! < G ", " 8 $ $    ! < G ", " A # > $ M .     ! < G ", "6 M 0 G # @ , & M ' "], answer: "A" }] }, "16. 8 . M - > 5 ( > (* M 0 > / ?  $ > ),  M 0 > + , & # M !  0 G  $ % > . ? 6 M 0 ? $ & # M !  0 G  ": { level1: [{ question: "  8 ?  M  G  G  > 2 . G   ? $  ( G  @ * M 0 > / ?  $ >  M / > 9 H ?", options: ["1/2", "1/3", "1/4", "1/6"], answer: "A" }], level2: [{ question: "  * > 8 G  G + G   ( G * 0 8 . 8   M / >  ( G  @ * M 0 > / ?  $ > 9 H :", options: ["1/2", "1/3", "1/6", "2/3"], answer: "A" }], level3: [{ question: ". ? 6 M 0 ? $ & # M !  0 G  . G   M / > & 0 M 6 > / >  > $ > 9 H ?", options: ["& K / >  ' ?  6 M 0 G # ? / >  ", "  6 M 0 G # @ ", " G 5 2 * M 0 $ ? 6 $ ", " G 5 2  ( A * > $ "], answer: "A" }] }, "17.  > 0 M $ @ / $ 2 ": { level1: [{ question: " > 0 M $ @ / $ 2 . G   M 7 H $ ?  0 G  >  K  M / >  9 $ G 9 H  ?", options: ["X-  M 7 ", "Y-  M 7 ", ". B 2 , ?  & A ", "0 G  > "], answer: "A" }], level2: [{ question: ", ?  & A (3,4)  ? 8  $ A 0 M % >  6 . G  8 M % ? $ 9 H ?", options: ["* M 0 % . ", "& M 5 ? $ @ / ", "$ C $ @ / ", " $ A 0 M % "], answer: "A" }], level3: [{ question: ". B 2 , ?  & A  G ( ? 0 M & G 6 >    M / > 9 K $ G 9 H  ?", options: ["(0,0)", "(1,1)", "(0,1)", "(1,0)"], answer: "A" }] }, "18.  M 7 G $ M 0 . ? $ ? ": { level1: [{ question: "10 . @  0 - A  > 5 > 2 G 5 0 M   >  M 7 G $ M 0 + 2  M / > 9 K  > ?", options: ["100 5 0 M  . @ ", "50 5 0 M  . @ ", "200 5 0 M  . @ ", "150 5 0 M  . @ "], answer: "A" }], level2: [{ question: "$ M 0 ?  M / > 7 8 G . @ 5 > 2 G 5 C $ M $  >  M 7 G $ M 0 + 2 9 K  > :", options: ["154 5 0 M  8 G . @ ", "44 5 0 M  8 G . @ ", "22 5 0 M  8 G . @ ", "77 5 0 M  8 G . @ "], answer: "A" }], level3: [{ question: "   / $  ? 8  @ 2  , >  12 . @  0  L ! < >  5 . @ 9 H ,  > * 0 ? . > *  M / > 9 H ?", options: ["34 . @ ", "60 . @ ", "30 . @ ", "17 . @ "], answer: "A" }] }, "19.  > $ >   ": { level1: [{ question: "2³ × 2²  > . > ( 9 H :", options: ["32", "16", "8", "64"], answer: "A" }], level2: [{ question: "5t ÷ 5² = ?", options: ["25", "125", "5", "625"], answer: "A" }], level3: [{ question: "(3²)³  > . > ( 9 H :", options: ["729", "81", "27", "243"], answer: "A" }] }, "20.  ' M / > * ( 8 . M , ( M ' @ . A & M & G ": { level1: [{ question: " # ? $ 6 ?  M 7 # . G  8 , 8 G . 9 $ M 5 * B 0 M #  M / > 9 H ?", options: [" 5 ' > 0 # > $ M .  8 .  ", "0  ( > ", " $ ? ", "* M 0 $ ? / K  ? $ > "], answer: "A" }], level2: [{ question: " # ? $ . G  ( ? & > ( > $ M .  6 ?  M 7 #  > & M & G 6 M /  M / > 9 H ?", options: [" ? ( >  / >  & B 0  0 ( > ", "* M 0 6 M ( K $ M $ 0 @ ", "* 0 @  M 7 > 2 G ( > ", "   & G ( > "], answer: "A" }], level3: [{ question: " # ? $ 6 ?  M 7 # . G    8 M  M 0  M  ? 5 ? 8 M  & C 7 M  ?  K #  ? 8 * 0 , 2 & G $ > 9 H ?", options: ["8 M 5 /   ' M / / ( ", "5 M / >  M / > ( ", "0  ( > ", " ( A 8 0 # "], answer: "A" }] } }; const allTopics = [ "1. * M 0 >  C $ ?  8   M / >   , * B 0 M # 8   M / >   , * 0 ? . G / 8   M / >   ", "2. * B 0 M # >   ,  K 7 M  , 2  A $ . 8 . > * 5 0 M $ M /  5  . 9 $ M $ . 8 . > * 5 0 M $  ", "3. 5 0 M  . B 2 ", "4.  ( . B 2 ", "5. 8 0 M 5 8 . ?  >   ", "6. , @   # ? $   0 8   M / >   ,   0 8   M / >   ,  0 8   M / >    @  > $ ", "7. , @  @ / 5 M /    K   >  K ! < ,   > ( > ,  A # >  5  - >  ", "8. / A  * $ 8 . @  0 # , 5 0 M  8 . @  0 # , 0 G  @ / 8 . @  0 # ", "9. 8 . > ( M $ 0 0 G  >   ,  $ A 0 M - A   @ 0  ( > , $ M 0 ? - A  ", "10. 5 C $ M $  0   M 0 @ /  $ A 0 M - A  ", "11. 5 C $ M $  @ 8 M * 0 M 6 0 G  >   ", "12. 5 > # ?  M /  # ? $   ( A * > $ , 8 . > ( A * > $ , * M 0 $ ? 6 $ $ > , 2 > - -9 > ( ? , , M / >  ", "13. , H   ?    5 0 M $ . > ( . A & M 0 > , , ? 2 $ % >  G 6 . G  ", "14. 8 >   M / ?  @     ! < K   > 5 0 M  @  0 # , . > ' M / , . > ' M / ?  >  5  , 9 A 2  ", "15. * >   5  & # M !  > 0 M  ,  5  @  C $    ! < K   >  ? $ M 0 ", "16. 8 . M - > 5 ( > (* M 0 > / ?  $ > ),  M 0 > + , & # M !  0 G  $ % > . ? 6 M 0 ? $ & # M !  0 G  ", "17.  > 0 M $ @ / $ 2 ", "18.  M 7 G $ M 0 . ? $ ? ", "19.  > $ >   ", "20.  ' M / > * ( 8 . M , ( M ' @ . A & M & G " ]; // Fallback for missing topics allTopics.forEach(topic => { if (!questions[topic]) { questions[topic] = { level1: [{ question: topic + " - , A ( ? / > & @ * M 0 6 M ( ", options: ["A","B","C","D"], answer:"A"}], level2: [{ question: topic + " - . ' M / . * M 0 6 M ( ", options: ["A","B","C","D"], answer:"B"}], level3: [{ question: topic + " - ( M ( $ * M 0 6 M ( ", options: ["A","B","C","D"], answer:"C"}] }; } }); // DOM Elements const startContainer = document.getElementById('startContainer'); const startScreen = document.getElementById('startScreen'); const subjectSelection = document.getElementById('subjectSelection'); const chapterSelection = document.getElementById('chapterSelection'); const levelSelection = document.getElementById('levelSelection'); const generatedPaperContainer = document.getElementById('generatedPaperContainer'); const startGeneratingBtn = document.getElementById('startGeneratingBtn'); const selectMathBtn = document.getElementById('selectMathBtn'); const backToStartBtn = document.getElementById('backToStartBtn'); const generateAssignmentBtn = document.getElementById('generateAssignmentBtn'); const backToChaptersBtn = document.getElementById('backToChaptersBtn'); const generateFinalBtn = document.getElementById('generateFinalBtn'); const level1Btn = document.getElementById('level1Btn'); const level2Btn = document.getElementById('level2Btn'); const level3Btn = document.getElementById('level3Btn'); const homeIcon = document.getElementById('homeIcon'); let selectedChapters = []; let selectedLevel = null; function populateChapters() { const container = document.getElementById('chapterCheckboxContainer'); if (!container) return; container.innerHTML = `<div class="checkbox-item"><input type="checkbox" id="fullPaper" value="full"><label for="fullPaper">* B 0 M # * > M /  M 0 . (8 - @ ${allTopics.length} 5 ? 7 / )</label></div>`; allTopics.forEach((topic, idx) => { container.innerHTML += `<div class="checkbox-item"><input type="checkbox" id="topic_${idx}" name="chapter" value="${topic}"><label for="topic_${idx}">${idx+1}. ${topic}</label></div>`; }); const fullPaperCheckbox = document.getElementById('fullPaper'); if(fullPaperCheckbox) fullPaperCheckbox.addEventListener('change', function() { document.querySelectorAll('input[name="chapter"]').forEach(cb => cb.disabled = this.checked); }); } function getRandomQuestions(chapters, level, count) { let allQuestions = []; chapters.forEach(ch => { if(questions[ch] && questions[ch][`level${level}`]) allQuestions = allQuestions.concat(questions[ch][`level${level}`]); }); if(allQuestions.length === 0) return [{ question: "* M 0 6 M ( * 2 , M ' ( 9 @  9 H  d  C * / >  ( M /  ' M / > /  A ( G  d ", options: ["A","B","C","D"], answer:"A" }]; allQuestions = allQuestions.sort(() => Math.random() - 0.5); return allQuestions.slice(0, Math.min(count, allQuestions.length)); } function resetToStart() { generatedPaperContainer.classList.add('hidden'); startContainer.classList.remove('hidden'); chapterSelection.classList.add('hidden'); levelSelection.classList.add('hidden'); startScreen.classList.remove('hidden'); subjectSelection.classList.add('hidden'); selectedLevel = null; if(level1Btn) level1Btn.classList.remove('selected'); if(level2Btn) level2Btn.classList.remove('selected'); if(level3Btn) level3Btn.classList.remove('selected'); } if(startGeneratingBtn) startGeneratingBtn.onclick = () => { startScreen.classList.add('hidden'); subjectSelection.classList.remove('hidden'); }; if(selectMathBtn) selectMathBtn.onclick = () => { subjectSelection.classList.add('hidden'); populateChapters(); chapterSelection.classList.remove('hidden'); }; if(backToStartBtn) backToStartBtn.onclick = resetToStart; if(homeIcon) homeIcon.onclick = resetToStart; if(generateAssignmentBtn) { generateAssignmentBtn.onclick = () => { const fullPaper = document.getElementById('fullPaper'); if(fullPaper && fullPaper.checked) selectedChapters = [...allTopics]; else selectedChapters = Array.from(document.querySelectorAll('input[name="chapter"]:checked')).map(cb => cb.value); if(selectedChapters.length === 0) { alert(" C * / >  . 8 G  .    ' M / > / /5 ? 7 /  A ( G  !"); return; } chapterSelection.classList.add('hidden'); levelSelection.classList.remove('hidden'); }; } if(backToChaptersBtn) backToChaptersBtn.onclick = () => { levelSelection.classList.add('hidden'); chapterSelection.classList.remove('hidden'); }; function selectLevel(level) { if(level1Btn) level1Btn.classList.remove('selected'); if(level2Btn) level2Btn.classList.remove('selected'); if(level3Btn) level3Btn.classList.remove('selected'); const btn = document.getElementById(`level${level}Btn`); if(btn) btn.classList.add('selected'); selectedLevel = level; } if(level1Btn) level1Btn.onclick = () => selectLevel(1); if(level2Btn) level2Btn.onclick = () => selectLevel(2); if(level3Btn) level3Btn.onclick = () => selectLevel(3); if(generateFinalBtn) { generateFinalBtn.onclick = () => { if(!selectedLevel) { alert(" C * / >  ? ( >  8 M $ 0  A ( G  !"); return; } startContainer.classList.add('hidden'); levelSelection.classList.add('hidden'); generatedPaperContainer.classList.remove('hidden'); const mcqs = getRandomQuestions(selectedChapters, selectedLevel, 45); let qNum = 1; let html = `<div class="header"><h2>UP TET * G * 0 2 -  # ? $ (Mathematics)  8 >  ( . G   </h2><h3>${selectedChapters.length === allTopics.length ? "* B 0 M # * > M /  M 0 . ( # ? $ 6 ?  M 7 #  5   - M / > 8 )" : selectedChapters.slice(0,3).join(", ")+ (selectedChapters.length>3?"...":"")}</h3><p>8 M $ 0 ${selectedLevel} - ${selectedLevel === 1 ? ", G 8 ?  " : selectedLevel === 2 ? ". ' M / . " : "* 0 @  M 7 > 8 M $ 0 "}</p></div><div class="content-area"><div class="instructions"><p><strong>( ? 0 M & G 6 :</strong></p><ol><li> A 2 45 , 9 A 5 ?  2 M * @ / * M 0 6 M ( (MCQs) 9 H  d </li><li>* M 0 $ M / G  * M 0 6 M (  G  > 0 5 ?  2 M * 9 H  ,  G 5 2   8 9 @ 9 H d </li><li>8 . / : 60 . ? (  </li><li>* M 0 6 M (  # ? $  G 5 ? - ? ( M (  ' M / > / K  * 0  ' > 0 ? $ 9 H  d </li></ol></div><div class="question-section"><div class="section-heading">, 9 A 5 ?  2 M * @ / * M 0 6 M ( (MCQs)</div>`; mcqs.forEach(mcq => { html += `<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++; }); html += `</div><div class="answer-sheet"><h3 class="section-title"> $ M $ 0  A   @ (Answer Key)</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><th>* M 0 6 M ( 8  .</th><th> $ M $ 0 </th></tr></thead><tbody>`; for(let i=0; i<mcqs.length; i+=3) { html += `<tr>`; for(let j=0; j<3; j++) { if(i+j < mcqs.length) html += `<td>${i+j+1}</td><td>${mcqs[i+j].answer}</td>`; else html += `<td></td><td></td>`; } html += `</tr>`; } html += `</tbody></table></div><div class="action-buttons"><button class="btn btn-primary" id="printBtn"><i class="fas fa-print"></i> * M 0 ?    0 G  </button><button class="btn btn-success" id="downloadBtn"><i class="fas fa-download"></i> PDF ! > ( 2 K !  0 G  </button><button class="btn btn-danger" id="newAssignmentBtn"><i class="fas fa-plus"></i> ( / >  8 >  ( . G   </button></div></div>`; generatedPaperContainer.innerHTML = html; const printBtn = document.getElementById('printBtn'); if(printBtn) printBtn.onclick = () => window.print(); const downloadBtn = document.getElementById('downloadBtn'); if(downloadBtn) downloadBtn.onclick = downloadPDF; const newBtn = document.getElementById('newAssignmentBtn'); if(newBtn) newBtn.onclick = resetToStart; }; } async function downloadPDF() { const element = document.getElementById('generatedPaperContainer'); if(!element) return; const tempDiv = document.createElement('div'); tempDiv.style.position = 'absolute'; tempDiv.style.left = '-9999px'; tempDiv.style.top = '-9999px'; tempDiv.style.width = '794px'; tempDiv.style.backgroundColor = 'white'; tempDiv.style.padding = '20px'; tempDiv.innerHTML = element.innerHTML; document.body.appendChild(tempDiv); try { const pdf = new jsPDF('p', 'mm', 'a4'); const pageWidth = pdf.internal.pageSize.getWidth() - 25.4; const pageHeight = pdf.internal.pageSize.getHeight() - 25.4; let position = 12.7, remainingHeight = tempDiv.scrollHeight, pageNum = 1; while(remainingHeight > 0) { const canvas = await html2canvas(tempDiv, { scale: 2, windowHeight: pageHeight * 3.78, windowWidth: pageWidth * 3.78, y: position * 3.78, height: pageHeight * 3.78, useCORS: true, backgroundColor: '#ffffff', logging: false }); const imgData = canvas.toDataURL('image/jpeg', 0.95); if(pageNum > 1) pdf.addPage('a4', 'portrait'); pdf.addImage(imgData, 'JPEG', 12.7, 12.7, pageWidth, (canvas.height * pageWidth) / canvas.width); position += pageHeight; remainingHeight -= pageHeight * 3.78; pageNum++; } pdf.save('UP_TET_Mathematics_Assignment.pdf'); } catch(err) { console.error(err); alert('PDF  ( 0 G 6 ( . G  $ M 0 A  ? d  C * / > * A (  * M 0 / > 8  0 G  d '); } finally { if(tempDiv && tempDiv.parentNode) document.body.removeChild(tempDiv); } } })(); </script> </body> </html>