let modes = { noob: [-3, 3,-3, 3, '+-', 15000, 10], easy: [-10, 10, -10, 10, '*/+-', 20000, 40], medium: [-40, 40, -20, 20, '*/+-', 40000, 150], hard: [-100, 100, -70, 70, '*/+-', 60000, 350], extreme: [-999999, 999999, -999999, 999999, '*/', 99999, 9999], impossible: [-99999999999, 99999999999, -99999999999, 999999999999, '*/', 30000, 35000], impossible2: [-999999999999999, 999999999999999, -999, 999, '/', 30000, 50000] } let operators = { '+': '+', '-': '-', '*': '×', '/': '÷' } function randomInt(from, to) { if (from > to) [from, to] = [to, from] from = Math.floor(from) to = Math.floor(to) return Math.floor((to - from) * Math.random() + from) } function pickRandom(list) { return list[Math.floor(Math.random() * list.length)] } function genMath(mode) { return new Promise((resolve, reject) => { let [a1, a2, b1, b2, ops, time, bonus] = modes[mode] let a = randomInt(a1, a2) let b = randomInt(b1, b2) let op = pickRandom([...ops]) let result = (new Function(`return ${a} ${op.replace('/', '*')} ${b < 0 ? `(${b})` : b}`))() if (op == '/') [a, result] = [result, a] hasil = { soal: `${a} ${operators[op]} ${b}`, mode: mode, waktu: time, hadiah: bonus, jawaban: result } resolve(hasil) }) } module.exports = { modes, operators, randomInt, pickRandom, genMath }