Last active
August 17, 2019 02:45
-
-
Save ynishi2014/05a42b6dada3908ac29e4632472b7639 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function makeQuiz(min, max, op){ | |
var v1 = makeRandom(min, max); | |
var v2 = makeRandom(min, max); | |
var str = ""; | |
str += v1 + " " + op + " " + v2 + " =\n"; | |
str += "sa:\n"; | |
//正答を作る | |
var answerArray = []; | |
var answer = calc(v1, v2, op); | |
answerArray.push(answer); | |
str += answer + "\n"; | |
//誤答を作る | |
var dummyCount = 0; | |
var endlessLoopDetector = 0; | |
while(dummyCount < 3){ | |
var v3 = makeRandom(min, max); | |
var v4 = makeRandom(min, max); | |
var dummyAnswer = calc(v3, v4, op); | |
if(answerArray.indexOf(dummyAnswer) == -1){ | |
str += dummyAnswer + "\n"; | |
answerArray.push(dummyAnswer); | |
dummyCount++ | |
}else{ | |
if(endlessLoopDetector++ > 10**3)break; | |
} | |
} | |
return str; | |
} | |
function calc(a, b, op){ | |
switch(op){ | |
case "+": return a+b; | |
case "*": return a*b; | |
} | |
} | |
function makeRandom(m1, m2){ | |
max = Math.max(m1, m2); | |
min = Math.min(m1, m2); | |
return Math.floor(min + (max - min + 1) * Math.random()); | |
} | |
function makeQuizN(min, max, op, n){ | |
var qArray = []; | |
for(var i = 0; i < n; i++){ | |
qArray.push(makeQuiz(min, max, op)); | |
} | |
return qArray.join("\n"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment