Can you create MCQs in this way that I can solve the Mcqs and check how much I have prepare
โ STOP HERE - Write down your answers before scrolling to the answer key below!
| Q# | Answer | Topic |
|---|---|---|
| 1 | B | Carbohydrate metabolism |
| 2 | C | Carbohydrate metabolism |
| 3 | C | Carbohydrate metabolism |
| 4 | B | TCA cycle |
| 5 | B | Glycogen metabolism |
| 6 | B | Pentose phosphate pathway |
| 7 | B | Lipid - beta oxidation |
| 8 | C | Lipoprotein metabolism |
| 9 | B | Fatty acid synthesis |
| 10 | B | Cholesterol synthesis |
| 11 | B | Hyperlipoproteinemia |
| 12 | C | Amino acid metabolism |
| 13 | B | Amino acid / nitrogen transport |
| 14 | C | Urea cycle |
| 15 | C | Coenzymes |
| 16 | B | Inborn errors of metabolism |
| 17 | C | Enzyme kinetics |
| 18 | B | Molecular biology - DNA |
| 19 | B | DNA replication |
| 20 | B | Translation |
| 21 | B | Vitamins |
| 22 | B | Vitamins |
| 23 | C | Nucleotide chemistry |
| 24 | B | Vitamins |
| 25 | C | Amino acid metabolism |
| Score | Assessment |
|---|---|
| 23โ25 | Excellent - Well prepared! |
| 18โ22 | Good - Review weak areas |
| 12โ17 | Fair - Need focused revision |
| Below 12 | Needs significant review |
Can you create in a clock able format bcz I want I solve the Mcqs and click option 2 if it is correct then u give the correct answer with short explanation
mkdir -p /home/daytona/workspace/biochem-quiz
~/biochem-quiz/biochem_mcq_quiz.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Biochemistry MCQ Quiz</title>
<style>
:root {
--primary: #2d6a9f;
--primary-dark: #1a4a72;
--correct: #27ae60;
--wrong: #e74c3c;
--neutral: #f0f4f8;
--card-bg: #ffffff;
--text: #1a1a2e;
--muted: #6b7280;
--radius: 12px;
--shadow: 0 4px 20px rgba(0,0,0,0.12);
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: 'Segoe UI', system-ui, sans-serif;
background: linear-gradient(135deg, #e8f4fd 0%, #f0f4f8 100%);
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
padding: 24px 16px;
color: var(--text);
}
/* โโ Header โโ */
.quiz-header {
width: 100%;
max-width: 760px;
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
flex-wrap: wrap;
gap: 12px;
}
.quiz-title {
font-size: 1.4rem;
font-weight: 700;
color: var(--primary-dark);
}
.quiz-title span { color: var(--primary); }
/* โโ Progress bar โโ */
.progress-wrap {
width: 100%;
max-width: 760px;
margin-bottom: 16px;
}
.progress-label {
display: flex;
justify-content: space-between;
font-size: 0.82rem;
color: var(--muted);
margin-bottom: 6px;
}
.progress-bar-bg {
background: #d1e3f5;
border-radius: 99px;
height: 8px;
overflow: hidden;
}
.progress-bar-fill {
height: 100%;
background: linear-gradient(90deg, var(--primary), #5ba3d9);
border-radius: 99px;
transition: width 0.4s ease;
}
/* โโ Timer โโ */
.timer-box {
display: flex;
align-items: center;
gap: 8px;
background: var(--primary-dark);
color: white;
padding: 8px 18px;
border-radius: 99px;
font-size: 1.05rem;
font-weight: 700;
letter-spacing: 1px;
min-width: 90px;
justify-content: center;
}
.timer-box.warning { background: #e67e22; }
.timer-box.danger { background: var(--wrong); animation: pulse 0.8s infinite; }
@keyframes pulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.05); }
}
/* โโ Score badge โโ */
.score-badge {
background: var(--neutral);
border: 2px solid var(--primary);
color: var(--primary-dark);
padding: 6px 16px;
border-radius: 99px;
font-weight: 700;
font-size: 0.95rem;
}
/* โโ Question card โโ */
.card {
width: 100%;
max-width: 760px;
background: var(--card-bg);
border-radius: var(--radius);
box-shadow: var(--shadow);
padding: 32px 36px;
margin-bottom: 20px;
animation: slideIn 0.3s ease;
}
@keyframes slideIn {
from { opacity: 0; transform: translateY(16px); }
to { opacity: 1; transform: translateY(0); }
}
.q-section-tag {
display: inline-block;
background: #e8f1fb;
color: var(--primary);
font-size: 0.75rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.8px;
padding: 3px 10px;
border-radius: 6px;
margin-bottom: 12px;
}
.q-number {
font-size: 0.85rem;
color: var(--muted);
margin-bottom: 8px;
font-weight: 600;
}
.q-text {
font-size: 1.1rem;
line-height: 1.65;
font-weight: 600;
margin-bottom: 28px;
color: var(--text);
}
/* โโ Options โโ */
.options-grid {
display: flex;
flex-direction: column;
gap: 12px;
}
.option-btn {
display: flex;
align-items: center;
gap: 14px;
background: var(--neutral);
border: 2px solid transparent;
border-radius: 10px;
padding: 14px 18px;
cursor: pointer;
font-size: 1rem;
text-align: left;
transition: all 0.2s ease;
font-family: inherit;
color: var(--text);
}
.option-btn:hover:not(:disabled) {
border-color: var(--primary);
background: #e8f1fb;
transform: translateX(4px);
}
.option-letter {
width: 32px;
height: 32px;
min-width: 32px;
border-radius: 50%;
background: white;
border: 2px solid #c5d8ec;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 0.88rem;
color: var(--primary);
transition: all 0.2s;
}
.option-btn.correct {
background: #e8f8ef;
border-color: var(--correct);
color: #1a5c36;
}
.option-btn.correct .option-letter {
background: var(--correct);
border-color: var(--correct);
color: white;
}
.option-btn.wrong {
background: #fdecea;
border-color: var(--wrong);
color: #7d1a14;
}
.option-btn.wrong .option-letter {
background: var(--wrong);
border-color: var(--wrong);
color: white;
}
.option-btn.reveal-correct {
background: #e8f8ef;
border-color: var(--correct);
opacity: 0.85;
}
.option-btn.reveal-correct .option-letter {
background: var(--correct);
border-color: var(--correct);
color: white;
}
.option-btn:disabled { cursor: default; }
/* โโ Explanation box โโ */
.explanation-box {
margin-top: 20px;
border-radius: 10px;
padding: 16px 20px;
font-size: 0.95rem;
line-height: 1.6;
display: none;
animation: fadeIn 0.35s ease;
}
.explanation-box.show { display: block; }
.explanation-box.correct-exp {
background: #e8f8ef;
border-left: 4px solid var(--correct);
color: #1a5c36;
}
.explanation-box.wrong-exp {
background: #fdecea;
border-left: 4px solid var(--wrong);
color: #7d1a14;
}
.explanation-box strong { display: block; margin-bottom: 4px; font-size: 1rem; }
@keyframes fadeIn {
from { opacity: 0; transform: translateY(-8px); }
to { opacity: 1; transform: translateY(0); }
}
/* โโ Next button โโ */
.next-btn {
display: none;
margin-top: 22px;
background: var(--primary);
color: white;
border: none;
border-radius: 10px;
padding: 13px 32px;
font-size: 1rem;
font-weight: 700;
cursor: pointer;
transition: background 0.2s, transform 0.15s;
font-family: inherit;
width: 100%;
}
.next-btn:hover { background: var(--primary-dark); transform: translateY(-1px); }
.next-btn.show { display: block; }
/* โโ Results screen โโ */
#results-screen {
display: none;
width: 100%;
max-width: 760px;
animation: slideIn 0.4s ease;
}
.results-card {
background: var(--card-bg);
border-radius: var(--radius);
box-shadow: var(--shadow);
padding: 40px 36px;
text-align: center;
}
.results-icon { font-size: 4rem; margin-bottom: 12px; }
.results-title {
font-size: 1.8rem;
font-weight: 800;
color: var(--primary-dark);
margin-bottom: 6px;
}
.results-score {
font-size: 3.5rem;
font-weight: 900;
color: var(--primary);
margin: 12px 0;
}
.results-subtitle {
font-size: 1rem;
color: var(--muted);
margin-bottom: 28px;
}
.grade-badge {
display: inline-block;
padding: 8px 28px;
border-radius: 99px;
font-weight: 800;
font-size: 1.1rem;
margin-bottom: 28px;
}
.grade-excellent { background: #e8f8ef; color: var(--correct); border: 2px solid var(--correct); }
.grade-good { background: #e8f1fb; color: var(--primary); border: 2px solid var(--primary); }
.grade-fair { background: #fef3cd; color: #856404; border: 2px solid #f0ad4e; }
.grade-poor { background: #fdecea; color: var(--wrong); border: 2px solid var(--wrong); }
.stats-row {
display: flex;
justify-content: center;
gap: 24px;
margin-bottom: 32px;
flex-wrap: wrap;
}
.stat-box {
background: var(--neutral);
border-radius: 10px;
padding: 16px 24px;
min-width: 110px;
}
.stat-box .stat-val { font-size: 2rem; font-weight: 800; }
.stat-box .stat-lbl { font-size: 0.8rem; color: var(--muted); margin-top: 2px; }
.stat-box.green .stat-val { color: var(--correct); }
.stat-box.red .stat-val { color: var(--wrong); }
.stat-box.blue .stat-val { color: var(--primary); }
.restart-btn {
background: var(--primary);
color: white;
border: none;
border-radius: 10px;
padding: 14px 40px;
font-size: 1rem;
font-weight: 700;
cursor: pointer;
transition: background 0.2s;
font-family: inherit;
}
.restart-btn:hover { background: var(--primary-dark); }
/* Review list */
.review-section {
margin-top: 32px;
text-align: left;
}
.review-title {
font-size: 1.1rem;
font-weight: 700;
color: var(--primary-dark);
margin-bottom: 16px;
padding-bottom: 8px;
border-bottom: 2px solid #e0eaf4;
}
.review-item {
padding: 12px 16px;
border-radius: 8px;
margin-bottom: 8px;
font-size: 0.92rem;
display: flex;
align-items: flex-start;
gap: 10px;
}
.review-item.r-correct { background: #e8f8ef; }
.review-item.r-wrong { background: #fdecea; }
.review-icon { font-size: 1.1rem; margin-top: 1px; }
.review-q { font-weight: 600; }
.review-ans { color: var(--muted); font-size: 0.85rem; margin-top: 2px; }
/* Responsive */
@media (max-width: 560px) {
.card { padding: 24px 18px; }
.q-text { font-size: 1rem; }
.results-card { padding: 28px 18px; }
.results-score { font-size: 2.8rem; }
}
</style>
</head>
<body>
<!-- Header -->
<div class="quiz-header">
<div class="quiz-title">๐งฌ <span>Biochemistry</span> MCQ Quiz</div>
<div style="display:flex; gap:10px; align-items:center; flex-wrap:wrap;">
<div class="score-badge" id="score-display">Score: 0 / 25</div>
<div class="timer-box" id="timer">โฑ 01:30</div>
</div>
</div>
<!-- Progress bar -->
<div class="progress-wrap">
<div class="progress-label">
<span id="q-label">Question 1 of 25</span>
<span id="pct-label">0%</span>
</div>
<div class="progress-bar-bg">
<div class="progress-bar-fill" id="progress-fill" style="width:0%"></div>
</div>
</div>
<!-- Quiz area -->
<div id="quiz-screen">
<div class="card" id="question-card">
<div class="q-section-tag" id="q-section"></div>
<div class="q-number" id="q-number"></div>
<div class="q-text" id="q-text"></div>
<div class="options-grid" id="options-container"></div>
<div class="explanation-box" id="explanation-box"></div>
<button class="next-btn" id="next-btn" onclick="nextQuestion()">Next Question โ</button>
</div>
</div>
<!-- Results screen -->
<div id="results-screen">
<div class="results-card">
<div class="results-icon" id="results-icon"></div>
<div class="results-title">Quiz Complete!</div>
<div class="results-score" id="results-score"></div>
<div class="results-subtitle">out of 25 questions</div>
<div class="grade-badge" id="grade-badge"></div>
<div class="stats-row">
<div class="stat-box green">
<div class="stat-val" id="stat-correct">0</div>
<div class="stat-lbl">Correct</div>
</div>
<div class="stat-box red">
<div class="stat-val" id="stat-wrong">0</div>
<div class="stat-lbl">Wrong</div>
</div>
<div class="stat-box blue">
<div class="stat-val" id="stat-time">0s</div>
<div class="stat-lbl">Time taken</div>
</div>
</div>
<button class="restart-btn" onclick="restartQuiz()">๐ Restart Quiz</button>
<div class="review-section">
<div class="review-title">๐ Question Review</div>
<div id="review-list"></div>
</div>
</div>
</div>
<script>
const questions = [
{
section: "Carbohydrate Metabolism",
text: "During glycolysis, which enzyme catalyzes the irreversible phosphorylation of fructose-6-phosphate to fructose-1,6-bisphosphate?",
options: ["Phosphoglucose isomerase", "Phosphofructokinase-1 (PFK-1)", "Pyruvate kinase", "Hexokinase"],
answer: 1,
explanation: "โ
Correct! PFK-1 is the rate-limiting enzyme of glycolysis. It catalyzes the irreversible step: Fructose-6-phosphate โ Fructose-1,6-bisphosphate. It is activated by AMP and inhibited by ATP and citrate."
},
{
section: "Carbohydrate Metabolism",
text: "A red blood cell (RBC) lacks mitochondria. What is the fate of pyruvate produced during glycolysis in an RBC?",
options: ["Enters the TCA cycle", "Undergoes transamination to alanine", "Reduced to lactate by lactate dehydrogenase", "Converted to acetyl-CoA by pyruvate dehydrogenase"],
answer: 2,
explanation: "โ
Correct! RBCs lack mitochondria, so pyruvate cannot enter the TCA cycle. LDH converts pyruvate โ lactate while regenerating NAD+, allowing anaerobic glycolysis to continue."
},
{
section: "Carbohydrate Metabolism",
text: "The pyruvate dehydrogenase complex requires all of the following coenzymes EXCEPT:",
options: ["Thiamine pyrophosphate (TPP)", "Lipoic acid", "Pyridoxal phosphate (PLP)", "CoA and FAD"],
answer: 2,
explanation: "โ
Correct! PDH requires TPP (B1), lipoic acid, CoA (B5), FAD (B2), and NAD (B3) โ remembered as 'TLC for NAD'. PLP (B6) is NOT required here; it is the coenzyme for transamination reactions."
},
{
section: "TCA Cycle",
text: "In the TCA cycle, which step produces GTP directly by substrate-level phosphorylation?",
options: ["Isocitrate โ alpha-ketoglutarate", "Succinyl-CoA โ Succinate", "Malate โ Oxaloacetate", "Fumarate โ Malate"],
answer: 1,
explanation: "โ
Correct! Succinyl-CoA synthetase converts Succinyl-CoA โ Succinate with direct production of GTP (substrate-level phosphorylation). This is the only step in the TCA cycle that directly generates a high-energy phosphate bond."
},
{
section: "Glycogen Metabolism",
text: "Glycogen phosphorylase cleaves glycogen by:",
options: ["Hydrolysis, releasing glucose-1-phosphate", "Phosphorolysis, releasing glucose-1-phosphate", "Phosphorolysis, releasing glucose-6-phosphate", "Hydrolysis, releasing free glucose"],
answer: 1,
explanation: "โ
Correct! Glycogen phosphorylase uses phosphorolysis (adds inorganic phosphate Pi, NOT water) to cleave alpha-1,4-glycosidic bonds, releasing glucose-1-phosphate. This keeps glucose phosphorylated and trapped inside the cell."
},
{
section: "Pentose Phosphate Pathway",
text: "Which enzyme is the rate-limiting step of the pentose phosphate pathway?",
options: ["Transketolase", "Glucose-6-phosphate dehydrogenase (G6PD)", "6-Phosphogluconate dehydrogenase", "Ribulose-5-phosphate epimerase"],
answer: 1,
explanation: "โ
Correct! G6PD is the rate-limiting enzyme of the pentose phosphate pathway. It generates NADPH for reductive biosynthesis and antioxidant defense. G6PD deficiency is the most common enzyme deficiency worldwide, causing hemolytic anemia with oxidant stress."
},
{
section: "Lipid Metabolism",
text: "Beta-oxidation of stearic acid (18-carbon saturated fatty acid) produces how many acetyl-CoA molecules?",
options: ["8", "9", "10", "6"],
answer: 1,
explanation: "โ
Correct! An 18-carbon fatty acid undergoes 8 cycles of beta-oxidation, yielding 9 acetyl-CoA molecules. Each 2-carbon cleavage produces 1 acetyl-CoA, and the last cycle simultaneously produces 2 acetyl-CoA from the 4-carbon remainder."
},
{
section: "Lipoprotein Metabolism",
text: "Which lipoprotein delivers dietary (exogenous) triglycerides from the intestine to peripheral tissues?",
options: ["VLDL", "IDL", "Chylomicrons", "HDL"],
answer: 2,
explanation: "โ
Correct! Chylomicrons transport dietary lipids from intestinal enterocytes via the lymphatics (thoracic duct) to peripheral tissues. VLDL transports endogenous lipids synthesized in the liver."
},
{
section: "Fatty Acid Synthesis",
text: "Malonyl-CoA, the first committed intermediate of fatty acid synthesis, is produced by:",
options: ["Fatty acid synthase", "Acetyl-CoA carboxylase", "ATP-citrate lyase", "Malic enzyme"],
answer: 1,
explanation: "โ
Correct! Acetyl-CoA carboxylase (requires biotin as cofactor) catalyzes: Acetyl-CoA + CO2 โ Malonyl-CoA. This is the rate-limiting, committed step of fatty acid synthesis. Importantly, malonyl-CoA also inhibits carnitine acyltransferase-I to prevent simultaneous beta-oxidation."
},
{
section: "Cholesterol Synthesis",
text: "HMG-CoA reductase, the rate-limiting enzyme of cholesterol synthesis, catalyzes which reaction?",
options: ["Acetyl-CoA โ HMG-CoA", "HMG-CoA โ Mevalonate", "Mevalonate โ Squalene", "Squalene โ Cholesterol"],
answer: 1,
explanation: "โ
Correct! HMG-CoA reductase converts HMG-CoA โ Mevalonate using 2 NADPH. This is the target of statins (competitive inhibitors), which are the most widely used cholesterol-lowering drugs."
},
{
section: "Lipid Disorders",
text: "A patient has eruptive xanthomas, severe hypertriglyceridemia, and abdominal pain. Lipoprotein lipase activity is absent. This represents:",
options: ["Type IIa familial hypercholesterolemia", "Type I hyperlipoproteinemia", "Tangier disease", "Abetalipoproteinemia"],
answer: 1,
explanation: "โ
Correct! Absent lipoprotein lipase (LPL) prevents hydrolysis of chylomicron triglycerides, causing massive accumulation of chylomicrons. This is Type I hyperlipoproteinemia (familial LPL deficiency), presenting with eruptive xanthomas, lipemia retinalis, and pancreatitis risk."
},
{
section: "Amino Acid Metabolism",
text: "Phenylketonuria (PKU) results from a deficiency of which enzyme?",
options: ["Tyrosinase", "Homogentisate oxidase", "Phenylalanine hydroxylase", "Fumarylacetoacetate hydrolase"],
answer: 2,
explanation: "โ
Correct! PKU is caused by deficiency of phenylalanine hydroxylase, which normally converts phenylalanine โ tyrosine (requires tetrahydrobiopterin/BH4 as cofactor). Accumulation of phenylalanine causes musty odor, intellectual disability, and hypopigmentation if untreated."
},
{
section: "Nitrogen Transport",
text: "Which amino acid serves as the major carrier of nitrogen from muscle to the liver?",
options: ["Glutamine", "Alanine", "Glycine", "Aspartate"],
answer: 1,
explanation: "โ
Correct! Alanine is the primary nitrogen carrier via the glucose-alanine cycle: muscle pyruvate + NH3 โ alanine (via transamination), alanine travels to liver, liver converts alanine back to pyruvate + releases NH3 into urea cycle. Glutamine carries nitrogen from most other peripheral tissues."
},
{
section: "Urea Cycle",
text: "The urea cycle takes place in which cellular compartments?",
options: ["Cytoplasm only", "Mitochondria only", "Both mitochondria and cytoplasm", "Endoplasmic reticulum and mitochondria"],
answer: 2,
explanation: "โ
Correct! The urea cycle spans two compartments. Steps 1-2 (carbamoyl phosphate synthesis, citrulline formation) occur in the MITOCHONDRIA. Steps 3-5 (argininosuccinate synthesis, cleavage, and arginase) occur in the CYTOPLASM."
},
{
section: "Coenzymes",
text: "Which vitamin is required as a coenzyme for all transamination reactions?",
options: ["Thiamine (B1)", "Riboflavin (B2)", "Pyridoxine (B6) as PLP", "Cobalamin (B12)"],
answer: 2,
explanation: "โ
Correct! Pyridoxal phosphate (PLP), the active form of vitamin B6, is the coenzyme for all aminotransferases (transaminases), including the clinically important AST and ALT. PLP forms a Schiff base with the amino group of the substrate."
},
{
section: "Inborn Errors",
text: "Maple syrup urine disease (MSUD) is caused by a defect in metabolism of which amino acids?",
options: ["Phenylalanine, tyrosine, tryptophan", "Leucine, isoleucine, valine (branched-chain AAs)", "Lysine, arginine, histidine", "Methionine, cysteine, homocysteine"],
answer: 1,
explanation: "โ
Correct! MSUD results from deficiency of branched-chain alpha-keto acid dehydrogenase complex, which metabolizes the keto-acids of leucine, isoleucine, and valine. Presents with sweet maple syrup odor in urine, encephalopathy, and feeding problems in neonates."
},
{
section: "Enzyme Kinetics",
text: "A competitive inhibitor of an enzyme:",
options: ["Increases Km and decreases Vmax", "Decreases Km and has no effect on Vmax", "Increases Km but does NOT change Vmax", "Decreases Vmax but does NOT change Km"],
answer: 2,
explanation: "โ
Correct! A competitive inhibitor competes with substrate for the active site. It INCREASES apparent Km (reduced substrate affinity) but Vmax is UNCHANGED because it can be overcome with high substrate concentrations. On a Lineweaver-Burk plot, lines intersect on the Y-axis."
},
{
section: "Molecular Biology",
text: "DNA replication is described as semi-conservative. This means:",
options: ["Each daughter DNA has two new strands", "Each daughter DNA has one parental + one new strand", "Only half the genome is replicated at a time", "Replication only occurs during meiosis"],
answer: 1,
explanation: "โ
Correct! Semi-conservative means each daughter DNA molecule retains ONE parental (template) strand and ONE newly synthesized strand. This was proven by the Meselson-Stahl experiment using N15/N14 isotope labeling."
},
{
section: "DNA Replication",
text: "Which enzyme/mechanism removes RNA primers during DNA replication in eukaryotes?",
options: ["DNA polymerase delta (ฮด)", "RNase H and DNA polymerase", "Primase", "Topoisomerase II"],
answer: 1,
explanation: "โ
Correct! In eukaryotes, RNA primers are removed by RNase H (degrades RNA in RNA:DNA hybrids) together with DNA polymerase delta/epsilon, which fills in the gaps with DNA. In prokaryotes, DNA pol I handles both primer removal and gap filling."
},
{
section: "Translation",
text: "The Shine-Dalgarno sequence is found in:",
options: ["Eukaryotic mRNA, upstream of the start codon", "Prokaryotic mRNA, upstream of the start codon", "The 5' cap structure of eukaryotic mRNA", "tRNA at the anticodon loop"],
answer: 1,
explanation: "โ
Correct! The Shine-Dalgarno sequence is a ribosome binding site found only in PROKARYOTES, located ~5-10 nucleotides upstream of the AUG start codon on mRNA. It base-pairs complementarily with the 3' end of 16S rRNA of the 30S ribosomal subunit to initiate translation."
},
{
section: "Vitamins",
text: "A strict vegan has megaloblastic anemia, elevated homocysteine, but NORMAL methylmalonic acid (MMA) levels. Which deficiency is most likely?",
options: ["Vitamin B12 (cobalamin)", "Folate", "Iron", "Vitamin B6"],
answer: 1,
explanation: "โ
Correct! Both B12 and folate deficiency cause elevated homocysteine and megaloblastic anemia. The KEY differentiator is methylmalonic acid (MMA): elevated MMA is SPECIFIC for B12 deficiency (B12 is needed for methylmalonyl-CoA mutase). Normal MMA + elevated homocysteine = FOLATE deficiency."
},
{
section: "Vitamins",
text: "Wernicke-Korsakoff syndrome seen in chronic alcoholics is caused by deficiency of:",
options: ["Niacin (B3)", "Thiamine (B1)", "Pyridoxine (B6)", "Biotin"],
answer: 1,
explanation: "โ
Correct! Thiamine (B1) deficiency causes Wernicke encephalopathy (confusion, ophthalmoplegia, ataxia - the classic triad) and Korsakoff psychosis (confabulation, amnesia). B1 is required by pyruvate dehydrogenase, alpha-ketoglutarate dehydrogenase, and transketolase."
},
{
section: "Nucleotide Chemistry",
text: "Which of the following correctly pairs a nucleotide base with its structural type?",
options: ["Adenine - Pyrimidine", "Thymine - Purine", "Guanine - Purine", "Cytosine - Purine"],
answer: 2,
explanation: "โ
Correct! Purines (double-ring structure) = Adenine and Guanine. Pyrimidines (single-ring) = Cytosine, Thymine, Uracil. Memory aid: 'Pure As Gold' (Purines = Adenine & Guanine). 'CUT the Py' (Pyrimidines = Cytosine, Uracil, Thymine)."
},
{
section: "Vitamins",
text: "The primary biochemical defect in scurvy (Vitamin C deficiency) is the failure to:",
options: ["Synthesize clotting factors II, VII, IX, X", "Hydroxylate proline and lysine residues in collagen", "Absorb dietary iron from the duodenum", "Produce NADPH via the pentose phosphate pathway"],
answer: 1,
explanation: "โ
Correct! Vitamin C (ascorbic acid) is required by prolyl and lysyl hydroxylase enzymes that hydroxylate proline and lysine in procollagen. Without hydroxylation, the collagen triple helix cannot form properly โ defective connective tissue โ bleeding gums, perifollicular hemorrhage, and poor wound healing."
},
{
section: "Amino Acid Metabolism",
text: "A patient's urine turns dark brown/black on standing and homogentisic acid is found in urine. What enzyme is deficient?",
options: ["Phenylalanine hydroxylase", "Tyrosinase", "Homogentisate oxidase (dioxygenase)", "Fumarylacetoacetate hydrolase"],
answer: 2,
explanation: "โ
Correct! This is Alkaptonuria, caused by deficiency of homogentisate oxidase (dioxygenase). Homogentisic acid (an intermediate in phenylalanine/tyrosine catabolism) accumulates and oxidizes to a dark pigment (ochronosis) upon air exposure. Also causes arthritis in older patients."
}
];
let current = 0;
let score = 0;
let answered = false;
let timeLeft = 90;
let timerInterval = null;
let startTime = Date.now();
let userAnswers = [];
function startTimer() {
clearInterval(timerInterval);
timeLeft = 90;
updateTimerDisplay();
timerInterval = setInterval(() => {
timeLeft--;
updateTimerDisplay();
if (timeLeft <= 0) {
clearInterval(timerInterval);
if (!answered) {
timeoutQuestion();
}
}
}, 1000);
}
function updateTimerDisplay() {
const mins = Math.floor(timeLeft / 60);
const secs = timeLeft % 60;
const display = `โฑ ${String(mins).padStart(2,'0')}:${String(secs).padStart(2,'0')}`;
const el = document.getElementById('timer');
el.textContent = display;
el.className = 'timer-box';
if (timeLeft <= 10) el.classList.add('danger');
else if (timeLeft <= 25) el.classList.add('warning');
}
function timeoutQuestion() {
answered = true;
const opts = document.querySelectorAll('.option-btn');
opts.forEach(btn => btn.disabled = true);
opts[questions[current].answer].classList.add('reveal-correct');
const expBox = document.getElementById('explanation-box');
expBox.innerHTML = `<strong>โฐ Time's up!</strong> The correct answer was <strong>${['A','B','C','D'][questions[current].answer]}. ${questions[current].options[questions[current].answer]}</strong>. ${questions[current].explanation.replace('โ
Correct! ','')}`;
expBox.className = 'explanation-box wrong-exp show';
userAnswers.push({ selected: -1, correct: questions[current].answer, timeout: true });
document.getElementById('next-btn').classList.add('show');
}
function loadQuestion() {
answered = false;
const q = questions[current];
document.getElementById('q-section').textContent = q.section;
document.getElementById('q-number').textContent = `Question ${current + 1} of ${questions.length}`;
document.getElementById('q-text').textContent = q.text;
const container = document.getElementById('options-container');
container.innerHTML = '';
q.options.forEach((opt, i) => {
const btn = document.createElement('button');
btn.className = 'option-btn';
btn.innerHTML = `<span class="option-letter">${['A','B','C','D'][i]}</span><span>${opt}</span>`;
btn.onclick = () => selectAnswer(i);
container.appendChild(btn);
});
const expBox = document.getElementById('explanation-box');
expBox.className = 'explanation-box';
expBox.innerHTML = '';
document.getElementById('next-btn').classList.remove('show');
// Progress
const pct = Math.round((current / questions.length) * 100);
document.getElementById('progress-fill').style.width = pct + '%';
document.getElementById('q-label').textContent = `Question ${current + 1} of ${questions.length}`;
document.getElementById('pct-label').textContent = pct + '%';
startTimer();
}
function selectAnswer(selected) {
if (answered) return;
answered = true;
clearInterval(timerInterval);
const q = questions[current];
const opts = document.querySelectorAll('.option-btn');
opts.forEach(btn => btn.disabled = true);
const expBox = document.getElementById('explanation-box');
if (selected === q.answer) {
score++;
opts[selected].classList.add('correct');
expBox.innerHTML = `<strong>${q.explanation}</strong>`;
expBox.className = 'explanation-box correct-exp show';
userAnswers.push({ selected, correct: q.answer, timeout: false });
} else {
opts[selected].classList.add('wrong');
opts[q.answer].classList.add('reveal-correct');
const shortExp = q.explanation.replace('โ
Correct! ', '');
expBox.innerHTML = `<strong>โ Incorrect.</strong> The correct answer was <strong>${['A','B','C','D'][q.answer]}. ${q.options[q.answer]}</strong>.<br><br>${shortExp}`;
expBox.className = 'explanation-box wrong-exp show';
userAnswers.push({ selected, correct: q.answer, timeout: false });
}
document.getElementById('score-display').textContent = `Score: ${score} / ${questions.length}`;
document.getElementById('next-btn').classList.add('show');
}
function nextQuestion() {
current++;
if (current < questions.length) {
// Progress
const pct = Math.round((current / questions.length) * 100);
document.getElementById('progress-fill').style.width = pct + '%';
document.getElementById('q-label').textContent = `Question ${current + 1} of ${questions.length}`;
document.getElementById('pct-label').textContent = pct + '%';
loadQuestion();
} else {
showResults();
}
}
function showResults() {
clearInterval(timerInterval);
document.getElementById('quiz-screen').style.display = 'none';
document.getElementById('results-screen').style.display = 'block';
const timeTaken = Math.round((Date.now() - startTime) / 1000);
const mins = Math.floor(timeTaken / 60);
const secs = timeTaken % 60;
const timeStr = mins > 0 ? `${mins}m ${secs}s` : `${secs}s`;
document.getElementById('results-score').textContent = `${score} / 25`;
document.getElementById('stat-correct').textContent = score;
document.getElementById('stat-wrong').textContent = 25 - score;
document.getElementById('stat-time').textContent = timeStr;
// Progress bar - complete
document.getElementById('progress-fill').style.width = '100%';
document.getElementById('pct-label').textContent = '100%';
const pct = (score / 25) * 100;
const badge = document.getElementById('grade-badge');
const icon = document.getElementById('results-icon');
if (pct >= 92) {
badge.textContent = '๐ Excellent โ Exam Ready!';
badge.className = 'grade-badge grade-excellent';
icon.textContent = '๐';
} else if (pct >= 72) {
badge.textContent = '๐ Good โ Review Weak Areas';
badge.className = 'grade-badge grade-good';
icon.textContent = '๐';
} else if (pct >= 48) {
badge.textContent = '๐ Fair โ More Revision Needed';
badge.className = 'grade-badge grade-fair';
icon.textContent = '๐';
} else {
badge.textContent = 'โ ๏ธ Needs Significant Revision';
badge.className = 'grade-badge grade-poor';
icon.textContent = 'โ ๏ธ';
}
// Review list
const reviewList = document.getElementById('review-list');
reviewList.innerHTML = '';
userAnswers.forEach((ua, i) => {
const q = questions[i];
const isCorrect = ua.selected === ua.correct;
const div = document.createElement('div');
div.className = `review-item ${isCorrect ? 'r-correct' : 'r-wrong'}`;
let ansText = '';
if (ua.timeout) {
ansText = `Timed out. Correct: ${['A','B','C','D'][ua.correct]}. ${q.options[ua.correct]}`;
} else if (isCorrect) {
ansText = `Your answer: ${['A','B','C','D'][ua.selected]}. ${q.options[ua.selected]} โ`;
} else {
ansText = `Your answer: ${['A','B','C','D'][ua.selected]}. ${q.options[ua.selected]} | Correct: ${['A','B','C','D'][ua.correct]}. ${q.options[ua.correct]}`;
}
div.innerHTML = `
<div class="review-icon">${isCorrect ? 'โ
' : 'โ'}</div>
<div>
<div class="review-q">Q${i+1}. ${q.text.substring(0, 75)}${q.text.length > 75 ? '...' : ''}</div>
<div class="review-ans">${ansText}</div>
</div>
`;
reviewList.appendChild(div);
});
}
function restartQuiz() {
current = 0;
score = 0;
answered = false;
userAnswers = [];
startTime = Date.now();
document.getElementById('score-display').textContent = 'Score: 0 / 25';
document.getElementById('results-screen').style.display = 'none';
document.getElementById('quiz-screen').style.display = 'block';
loadQuestion();
}
// Start!
loadQuestion();
</script>
</body>
</html>
cd /home/daytona/workspace/biochem-quiz && wc -l biochem_mcq_quiz.html && echo "File size: $(du -sh biochem_mcq_quiz.html | cut -f1)" && echo "Questions found: $(grep -c 'section:' biochem_mcq_quiz.html)"
biochem mcq quiz
HTML File ยท HTML
| Feature | Details |
|---|---|
| 25 MCQs | All Biochemistry topics, mixed difficulty |
| Countdown Timer | 90 seconds per question - turns orange at 25s, red + pulsing at 10s |
| Instant Feedback | Click an option - green = correct โ , red = wrong โ |
| Correct answer revealed | If you pick wrong, the correct answer lights up green automatically |
| Short explanation | Appears immediately after every click |
| Live score tracker | Top-right updates after each question |
| Progress bar | Shows % completed at the top |
| Final results screen | Shows score, time taken, grade, and full question review |
| Restart button | Try again from the beginning |