P6 MATHEMATICS PRIMARY LEAVING NATIONAL EXAMINATIONS, 2025–2026
PLE Mathematics 2025-2026 — Interactive Quiz
PRIMARY LEAVING NATIONAL EXAMINATIONS, 2025–2026
MATHEMATICS — Interactive Auto-Marking Version
NESA (National Examination and School Inspection Authority) · Total: 100 marks
Candidate Registration
Please record your details exactly as they appear on your registration form before starting the exam.
⚠️ Please enter at least your Surname and Other Names before starting.
⚠️ Please answer all questions before submitting — unanswered items are marked as 0.
Your Result
0 / 100
0%
`, options:["5/8","2/3","5/6","3/4"], correct:0}, {id:"q5", marks:2, text:"5) Work out the following: 5/12 + 3/12 + 2/12 =", options:["5/6","2/3","5/18","2/9"], correct:0}, {id:"q6", marks:3, text:"6) The ratio of mass of maize to rice was 3:5. The total mass of maize and rice was 96 kg. Calculate the mass of maize and the mass of rice.", options:["Maize = 36kg, Rice = 36kg","Maize = 36kg, Rice = 60kg","Maize = 60kg, Rice = 60kg","Maize = 60kg, Rice = 36kg"], correct:1}, {id:"q7", marks:2, text:"7) Evaluate: √16 + √25 =", options:["5","7","9","11"], correct:2}, {id:"q8", marks:3, text:"8) A motorist drives at a speed of 72 km/hr. How much time does he take to cover a distance of 216 km?", options:["1 hour","2 hours","3 hours","4 hours"], correct:2}, // ---- Q9 conversions (3 sub-parts) ---- {id:"q9a", marks:1, text:"9A) Convert: 261 dl to cl", options:["2610 cl","26.1 cl","261 cl","2.61 cl"], correct:0}, {id:"q9b", marks:1, text:"9B) Convert: 42 619 dm³ to m³", options:["42.619 m³","426.19 m³","4.2619 m³","42619000 m³"], correct:0}, {id:"q9c", marks:1, text:"9C) Convert: 325.6 g to hg", options:["3.256 hg","32.56 hg","0.3256 hg","325600 hg"], correct:0}, {id:"q10", marks:2, text:"10) In the number 84,675, determine the digit which represents the thousands.", options:["4","6","7","8"], correct:0}, {id:"q11", marks:2, text:"11) Write in figures: Thirty thousand and five.", options:["3005","300005","3000005","30005"], correct:3}, {id:"q12", marks:4, text:"12) The sides of an irregular hexagon are 0.025dam, 15cm, 2dm, 0.3m, 20cm and 300mm. Determine the perimeter in metres.", options:["1.45m","1.04m","0.41m","1.4m"], correct:3}, // ---- Q13 rectangle (3 sub-parts) ---- {id:"q13a", marks:1, text:"13A) The figure below is a rectangle. Find the value of x.", figureHTML:``, options:["x = 2","x = 1","x = 3","x = 4"], correct:0}, {id:"q13b", marks:1, text:"13B) Using the same rectangle, find the length (4x cm).", options:["8 cm","6 cm","10 cm","12 cm"], correct:0}, {id:"q13c", marks:1, text:"13C) Using the same rectangle, find the width (3x cm).", options:["6 cm","8 cm","4 cm","9 cm"], correct:0}, // ---- Q14 coin toss (4 sub-parts) ---- {id:"q14a", marks:1, text:`14) A group tossed a coin 10 times, recording H for heads and T for tails:
Throw
1
2
3
4
5
6
7
8
9
10
Head (H)
H
H
H
H
H
Tail (T)
T
T
T
T
T
14A) Find the total number of heads (H).`, options:["5","4","6","3"], correct:0}, {id:"q14b", marks:1, text:"14B) Find the total number of tails (T).", options:["5","4","6","3"], correct:0}, {id:"q14c", marks:1, text:"14C) What was the chance (probability) of getting a Head?", options:["1/2","1/3","2/5","3/5"], correct:0}, {id:"q14d", marks:1, text:"14D) What was the chance (probability) of getting a Tail?", options:["1/2","1/3","2/5","3/5"], correct:0}, // ---- Q15 rounding (3 sub-parts) ---- {id:"q15a", marks:1, text:"15A) Round off 89.282 to the nearest whole number.", options:["89","90","89.3","89.28"], correct:0}, {id:"q15b", marks:1, text:"15B) Round off 5.297 to the nearest hundredths.", options:["5.30","5.29","5.3","5.297"], correct:0}, {id:"q15c", marks:1, text:"15C) Round off 79.998 to the nearest tenths.", options:["80.0","79.9","80.1","79.99"], correct:0}, {id:"q16", marks:3, text:"16) 840,000 Frw was shared in a ratio of 3:4. What was each share?", options:["360,000 Frw & 480,000 Frw","320,000 Frw & 520,000 Frw","420,000 Frw & 420,000 Frw","300,000 Frw & 540,000 Frw"], correct:0}, // ---- Q17 sequences (3 sub-parts) ---- {id:"q17a", marks:1, text:"17A) Find the missing numbers: 3, 8, 13, 18, __, __", options:["23, 28","22, 26","24, 29","23, 27"], correct:0}, {id:"q17b", marks:1, text:"17B) Find the missing numbers: 1, 4, 7, 10, __, __", options:["13, 16","12, 15","14, 17","13, 15"], correct:0}, {id:"q17c", marks:1, text:"17C) Find the missing numbers: 2, 7, 12, 17, __, __", options:["22, 27","21, 26","23, 28","22, 26"], correct:0}, {id:"q18", marks:4, text:"18) 2 bags weigh 70 kg. What is the weight of 5 bags?", options:["175 kg","140 kg","150 kg","180 kg"], correct:0}, {id:"q19", marks:4, text:"19) Gisa bought 4 radios at 125,000 Frw each, a TV set at 200,000 Frw and 5 DVD players at 55,000 Frw each. How much money did he remain with if he had 1,000,000 Frw?", options:["25,000 Frw","50,000 Frw","75,000 Frw","100,000 Frw"], correct:0}, {id:"q20", marks:5, text:`20) The table below shows shoe sizes for different people:
Person
Elise
Janvier
Nadege
Phionah
Shoe size
6
8
4
7
Based on the bar chart below, who has the largest shoe size?`, figureHTML:``, options:["Janvier","Elise","Nadege","Phionah"], correct:0}, // ---- Q21 equation & inequality ---- {id:"q21a", marks:3, text:"21A) Solve the equation: 2x − 3 = 7", options:["x = 5","x = 4","x = 6","x = 3.5"], correct:0}, {id:"q21b", marks:3, text:"21B) Solve the inequality: 2x − 4 ≥ 0", options:["x ≥ 2","x ≤ 2","x ≥ 4","x ≥ −2"], correct:0}, // ---- Q22 angles ---- {id:"q22a", marks:1, text:"22) Study the diagram below (two parallel lines cut by a transversal, with a 50° angle marked).", figureHTML:`
The two horizontal lines are parallel.
`,
text_suffix:"22A) Find the value of angle a.",
options:["50°","130°","90°","40°"], correct:0},
{id:"q22b", marks:1, text:"22B) Using the same diagram, find the value of angle b.", options:["130°","50°","90°","40°"], correct:0},
{id:"q22c", marks:1, text:"22C) Using the same diagram, find the value of angle c.", options:["50°","130°","90°","40°"], correct:0},
// ---- Q23 circle table ----
{id:"q23a", marks:1, text:`23) Copy and complete the table below (take π = 22/7 for row 1, π = 3.14 for row 2):
Circumference
Diameter
Radius
π
88 m
?
b
22/7
?
?
50 m
3.14
23A) Find the diameter in row 1 (circumference = 88m).`,
options:["28 m","14 m","56 m","44 m"], correct:0},
{id:"q23b", marks:1, text:"23B) Find the radius (b) in row 1.", options:["14 m","28 m","7 m","22 m"], correct:0},
{id:"q23c", marks:1, text:"23C) Find the circumference in row 2 (radius = 50m, π=3.14).", options:["314 m","300 m","157 m","628 m"], correct:0},
{id:"q23d", marks:1, text:"23D) Find the diameter in row 2.", options:["100 m","50 m","150 m","200 m"], correct:0},
{id:"q24", marks:2, text:"24) To construct triangle ABC with AB = 6cm, ∠ABC = 60° and BC = 4cm using a ruler and protractor, what is the correct construction order?",
options:["Draw AB = 6cm, construct 60° at B, then mark BC = 4cm along the new arm and join AC",
"Draw BC = 4cm, construct 90° at C, then mark AB = 6cm",
"Draw AC first, then measure the angle at B afterward",
"Draw AB and BC as two separate unconnected lines, then measure 60° anywhere"], correct:0},
{id:"q25", marks:2, text:"25) Hirwa ate 5/12 of a cake. He gave 2/12 of it to Keza. Calculate the fraction of the cake they ate.",
options:["6/12","7/12","3/12","8/12"], correct:1},
{id:"q26", marks:2, text:`26) The following data was collected:
Pupil
Jean Paul
Anitha
Bernard
Fike
Height
1.40 m
1.38 m
1.43 m
1.42 m
What type of data was collected?`,
options:["Quantitative (continuous) data","Qualitative data","Nominal data","Categorical data"], correct:0},
{id:"q27", marks:3, text:"27) A tank had 2.4 dal. John added 90 dl into the tank. Determine the litres of water in the tank.",
options:["30 litres","31 litres","32 litres","33 litres"], correct:3},
{id:"q28", marks:3, text:"28) Ineza bought goods at 2,500 Frw and sold them at 3,000 Frw. Calculate her profit.",
options:["700 Frw","500 Frw","600 Frw","800 Frw"], correct:1},
// ---- Q29 currency ----
{id:"q29a", marks:1, text:`29) Currency exchange table: 1 USD = 1459.58 Frw, 1 EUR = 1720.80 Frw, 1 UGSh = 0.41 Frw.
29A) A man had 300 USD. How much is this in Frw?`,
options:["437,874 Frw","435,000 Frw","440,874 Frw","430,000 Frw"], correct:0},
{id:"q29b", marks:1, text:"29B) A child had 20,000 Frw. How much is this in EUR? (round to 2 d.p.)", options:["11.62 EUR","12.62 EUR","10.62 EUR","11.02 EUR"], correct:0},
{id:"q29c", marks:1, text:"29C) A woman had 600 UGSh. How much is this in Frw?", options:["246 Frw","240 Frw","250 Frw","260 Frw"], correct:0},
{id:"q30", marks:2, text:"30) 75 trees were planted around a field, equally spaced at intervals of 4m. Calculate the distance around the field that was planted.",
options:["300 m","320 m","280 m","330 m"], correct:0},
{id:"q31", marks:2, text:"31) Compare the following numbers using <, > or =: 0.128 and 0.109",
options:["0.128 > 0.109","0.128 33A) How much did Tom spend in total?",
options:["3300 Frw","2800 Frw","3000 Frw","3500 Frw"], correct:0},
{id:"q33b", marks:1, text:"33B) How much did James spend in total?", options:["1300 Frw","800 Frw","1500 Frw","2000 Frw"], correct:0},
{id:"q33c", marks:1, text:"33C) How much did Tom save?", options:["1700 Frw","2200 Frw","1500 Frw","2000 Frw"], correct:0},
{id:"q33d", marks:1, text:"33D) How much did James save?", options:["3700 Frw","4200 Frw","3500 Frw","4000 Frw"], correct:0},
{id:"q34", marks:2, text:"34) A cube has a side of 18 cm. Determine its volume.",
options:["5832 cm³","2916 cm³","1458 cm³","729 cm³"], correct:0},
{id:"q35", marks:2, text:"35) A rectangular box is 65 cm long, 40 cm wide and 28 cm high. Calculate the volume of the box.",
options:["72,800 cm³","72,000 cm³","70,800 cm³","73,800 cm³"], correct:0},
];
// Sanity check total marks
const totalMarks = questions.reduce((s,q)=>s+q.marks,0);
/* ---------------------------------------------------------
CANDIDATE REGISTRATION
--------------------------------------------------------- */let candidate = null;
document.getElementById('startBtn').addEventListener('click', ()=>{
const surname = document.getElementById('surname').value.trim();
const othernames = document.getElementById('othernames').value.trim();
const regError = document.getElementById('regError');
if(!surname || !othernames){
regError.style.display = 'block';
return;
}
regError.style.display = 'none';
const school = document.getElementById('school').value.trim();
const examDate = document.getElementById('examDate').value;
candidate = {
surname, othernames,
fullName: `${surname} ${othernames}`,
school: school || "—",
examDate: examDate || "—",
startedAt: new Date().toLocaleString()
};
// Lock the registration card, unlock the quiz
document.getElementById('candidateCard').classList.add('locked');
document.getElementById('quizArea').classList.remove('locked');
document.getElementById('submitBtn').classList.remove('locked');
const banner = document.getElementById('candidateBanner');
banner.style.display = 'flex';
banner.innerHTML = `👤 ${candidate.fullName}School: ${candidate.school}`;
document.getElementById('container').scrollIntoView({behavior:'smooth'});
});
/* ---------------------------------------------------------
RENDER
--------------------------------------------------------- */const quizArea = document.getElementById('quizArea');
questions.forEach((q, idx)=>{
const card = document.createElement('div');
card.className = 'qcard';
card.id = 'card-'+q.id;
const head = document.createElement('div');
head.className = 'qhead';
head.innerHTML = `Question ${idx+1}${q.marks} mark${q.marks>1?'s':''}`;
card.appendChild(head);
const textDiv = document.createElement('div');
textDiv.className = 'qtext';
textDiv.innerHTML = q.text_suffix ? q.text_suffix : q.text;
card.appendChild(textDiv);
if(q.figureHTML){
const fig = document.createElement('div');
fig.className = 'figure';
fig.innerHTML = q.figureHTML;
card.insertBefore(fig, textDiv.nextSibling);
}
const optsDiv = document.createElement('div');
optsDiv.className = 'options';
const letters = ['A','B','C','D'];
q.options.forEach((opt,i)=>{
const label = document.createElement('label');
label.className = 'opt';
label.innerHTML = ` ${letters[i]}) ${opt}`;
label.querySelector('input').addEventListener('change', ()=>{
card.classList.add('answered');
});
optsDiv.appendChild(label);
});
card.appendChild(optsDiv);
const fb = document.createElement('div');
fb.className = 'feedback';
fb.id = 'fb-'+q.id;
card.appendChild(fb);
quizArea.appendChild(card);
});
/* ---------------------------------------------------------
GRADING
--------------------------------------------------------- */document.getElementById('submitBtn').addEventListener('click', ()=>{
if(!candidate){
alert("Please complete Candidate Registration and click 'Start Exam' first.");
document.getElementById('candidateCard').scrollIntoView({behavior:'smooth'});
return;
}
let score = 0;
let unanswered = 0;
questions.forEach(q=>{
const selected = document.querySelector(`input[name="${q.id}"]:checked`);
const card = document.getElementById('card-'+q.id);
const fb = document.getElementById('fb-'+q.id);
card.classList.remove('correct','incorrect');
fb.classList.remove('show','good','bad');
if(!selected){
unanswered++;
card.classList.add('incorrect');
fb.classList.add('show','bad');
fb.textContent = `Not answered. Correct answer: ${['A','B','C','D'][q.correct]}) ${q.options[q.correct]}`;
return;
}
const chosen = parseInt(selected.value,10);
if(chosen === q.correct){
score += q.marks;
card.classList.add('correct');
fb.classList.add('show','good');
fb.textContent = `✔ Correct! (+${q.marks} mark${q.marks>1?'s':''})`;
} else {
card.classList.add('incorrect');
fb.classList.add('show','bad');
fb.textContent = `✘ Incorrect. Correct answer: ${['A','B','C','D'][q.correct]}) ${q.options[q.correct]}`;
}
});
const pct = Math.round((score/totalMarks)*1000)/10;
document.getElementById('resultScore').textContent = `${score} / ${totalMarks}`;
document.getElementById('resultPct').textContent = `${pct}%`;
const candInfo = document.getElementById('candInfo');
candInfo.innerHTML = `Candidate: ${candidate.fullName} |
School: ${candidate.school} |
Date: ${candidate.examDate}`;
let remark = '';
if(pct>=80) remark = "Excellent! Outstanding performance. 🌟";
else if(pct>=65) remark = "Very good! Keep it up. 👍";
else if(pct>=50) remark = "Good — a pass. Review the missed topics.";
else remark = "Needs improvement — revise the topics you missed.";
document.getElementById('remark').textContent = remark;
document.getElementById('unansweredNote').style.display = unanswered>0 ? 'block' : 'none';
const resultBox = document.getElementById('result');
resultBox.style.display = 'block';
resultBox.scrollIntoView({behavior:'smooth', block:'center'});
});