"use strict"; function round2(x) { return Math.round(x * 100) / 100; } module.exports = { slug: "reading-time-estimate", title: "Reading time estimate", deck_category: "other", description: "Estimates the time to read a passage from its word count and a chosen reading speed in words per minute.", inputs: [ { name: "word_count", type: "integer", unit: "words", required: true, description: "Number of words in the passage.", min: 1 }, { name: "words_per_minute", type: "integer", unit: "words/minute", required: true, description: "Assumed reading speed. Typical adult silent-reading rates fall roughly between 200 and 250 words per minute.", min: 1 } ], outputs: [ { name: "minutes", unit: "minutes", description: "Estimated reading time." } ], steps: [ "minutes = word_count / words_per_minute.", "Round to 2 decimals.", "words_per_minute is supplied as an input rather than assumed, because reading speed varies by reader and material; typical adult silent-reading rates are roughly 200 to 250 words per minute." ], constants: [ { name: "typical_adult_wpm_low", value: 200, unit: "words/minute", source: 0 }, { name: "typical_adult_wpm_high", value: 250, unit: "words/minute", source: 0 } ], sources: [ { kind: "doi", value: "Brysbaert, M. (2019). How many words do we read per minute? A review and meta-analysis of reading rate. Journal of Memory and Language, 109, 104047.", title: "How many words do we read per minute? A review and meta-analysis of reading rate", publisher: "Journal of Memory and Language", retrieved_utc: "2026-09-30T20:03:00Z", note: "Meta-analysis reporting typical adult silent-reading rates in roughly the 200-250 words-per-minute range." } ], disclaimer: null, questionText(inputs) { return `How long does it take to read a ${inputs.word_count}-word passage at ${inputs.words_per_minute} words per minute?`; }, run(inputs) { const { word_count, words_per_minute } = inputs || {}; if (!Number.isInteger(word_count) || word_count < 1) throw new Error("word_count must be a positive integer"); if (!Number.isInteger(words_per_minute) || words_per_minute < 1) throw new Error("words_per_minute must be a positive integer"); const minutes = round2(word_count / words_per_minute); return { answer: `${minutes.toFixed(2)} minutes`, values: { minutes } }; }, examples: [ { name: "worked example", inputs: { word_count: 1000, words_per_minute: 200 }, expected: { answer: "5.00 minutes" }, check: "By hand: 1000/200=5 exactly, verified by direct division." }, { name: "test vector: faster reader", inputs: { word_count: 1500, words_per_minute: 250 }, expected: { answer: "6.00 minutes" }, check: "By hand: 1500/250=6 exactly, verified by direct division." } ] };