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
        });
    }

}