math-q-factory
Version:
node module that return maths questions
33 lines (31 loc) • 1.48 kB
JavaScript
const rFuncs = require('../../nonQ/randFuncs');
const orderSetup = (qName) => {
let thousands = rFuncs.randomInt(26) * 1000; // a number from 0 to 25000
let hundreds = (rFuncs.randomInt(9) + 1) * 100; // a number like 200
let smaller = hundreds - rFuncs.randomInt(50) - 1; // a number like 176
let tens = (rFuncs.randomInt(9) + 1) * 10; // a number like 20
let tensBigger = hundreds + tens; // a number like 220
let aBitOff = tensBigger - rFuncs.randomInt(9) - 1; // a number like 211
let order1 = [hundreds, smaller, tensBigger, aBitOff];
let order2 = [tensBigger, hundreds, smaller, aBitOff];
let order3 = [aBitOff, tensBigger, hundreds, smaller];
let list = [order1, order2, order3][rFuncs.randomInt(3)].map(d => Number((thousands + d) + 'e-3'));
let upOrDown = rFuncs.randomInt(2);
let sortDirection = upOrDown === 0 ? 'ascending' : 'descending'
let ordered = [...list].sort((a, b) => upOrDown === 0 ? a - b : b - a);
return {
qType: 'sort',
q: `Put ${list.join(', ')} into ${sortDirection} order`,
a: ordered,
hints: [
'Adding zeros to the end of a decimal does not change its value',
`Sort ${list.map(d => d.toFixed(3)).join(', ')}`
],
buildingBlocks: [],
qFeedback: `${ordered.join(', ')} is in ${sortDirection} order`
}
}
module.exports = {
sectionName: 'order',
qGetter: orderSetup
}