JSFiddle - React, Tailwind, and code Playground
by ipr101
JavaScript
var ta = [];
ta.push("Liverpool");
ta.push("Chelsea");
ta.push("Arsenal");
ta.push("Manchester United");
ta.push("Fulham");
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function shuffle(array) {
var tmp, current, top = array.length;
if (top) while (--top) {
current = Math.floor(Math.random() * (top + 1));
tmp = array[current];
array[current] = array[top];
array[top] = tmp;
}
return array;
}
var s = "How many times has Name Name done something? Is it 59, $rn$ or $rn$?,an";
var s = "Who did Name Name make his international debut against? Was it Turkey, $tn$ or $tn$?,an";
console.log(getMultiChoiceOptions(s));
function getMultiChoiceOptions(qt) {
if (qt.indexOf("$rn$") > -1) {
return s.replace(/(\d+), (\$rn\$) or (\$rn\$)\?,(an)/g, function(m, num, alt1, alt2, an) {
var a = [];
a.push(parseInt(num));
while (a.length < 3) {
var ri = getRandomInt(parseInt(num) - 3, parseInt(num) + 3);
if (a.indexOf(ri) == -1) a.push(ri);
}
a = shuffle(a);
return a[0] + ", " + a[1] + " or " + a[2] + "?," + num
});
}
if (qt.indexOf("$tn$") > -1) {
return s.replace(/([A-za-z]+), (\$tn\$) or (\$tn\$)\?,(an)/g, function(m, ans, alt1, alt2, an) {
var a = [];
a.push(ans);
var sta = shuffle(ta);
var counter = 0;
while (a.length < 3) {
var tn = sta[counter];
if (a.indexOf(tn) == -1) a.push(tn);
counter++;
}
a = shuffle(a);
return a[0] + ", " + a[1] + " or " + a[2] + "?," + ans
});
}
}