Last active
December 15, 2015 12:39
-
-
Save ftao/5261845 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
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<style> | |
#result{ | |
width:900px; | |
line-height:25px; | |
} | |
#result ol li { | |
width:30%; | |
float:left; | |
} | |
</style> | |
<style> | |
@media print { | |
#control { | |
display:none; | |
} | |
#result { | |
margin-top:20px; | |
font-size:18px; | |
} | |
} | |
</style> | |
</head> | |
<body> | |
<script> | |
var operators = ["+", "-", "*", "/"]; | |
var mulOperators = ['*', '/']; | |
var opMap = { | |
'+' : ' + ', | |
'-' : ' - ', | |
'*' : ' × ', | |
'/' : ' ÷ ' | |
}; | |
var minNumber = 1; | |
var maxNumber = 100; | |
function translateOp(op){ | |
return opMap[op]; | |
} | |
function genNumber(min, max) { | |
return Math.floor(Math.random() * (max - min) + min); | |
} | |
function genOperator() { | |
var index = genNumber(0, 4); | |
return operators[index]; | |
} | |
function isInt(n) { | |
return n % 1 === 0; | |
} | |
function isResultValidNumber(parts){ | |
var expr = parts.join(""); | |
var ret = eval(expr); | |
return (ret >= minNumber && ret < maxNumber && isInt(ret)); | |
} | |
function isValidExpr(parts){ | |
if (mulOperators.indexOf(parts[1]) == -1 | |
&& mulOperators.indexOf(parts[3]) >= 0){ // first op is not */, second op is * / | |
return isResultValidNumber(parts.slice(2, 5)) && isResultValidNumber(parts); | |
} | |
else{ | |
return isResultValidNumber(parts.slice(0, 3)) && isResultValidNumber(parts); | |
} | |
} | |
function genExpr(){ | |
while (1){ | |
var parts = [ | |
genNumber(minNumber, maxNumber), | |
genOperator(), | |
genNumber(minNumber, maxNumber), | |
genOperator(), | |
genNumber(minNumber, maxNumber), | |
]; | |
if(isValidExpr(parts)){ | |
var expr = parts.join(""); | |
var ret = eval(expr); | |
parts.push(' = '); | |
parts.push(ret); | |
return parts; | |
} | |
} | |
} | |
function genPuzzle(){ | |
var expr = genExpr(); | |
var location = genNumber(0, 4) * 2; | |
expr[location] = '( )'; | |
expr[1] = opMap[expr[1]]; | |
expr[3] = opMap[expr[3]]; | |
return expr.join(""); | |
} | |
function genPaper(count, targetId){ | |
var target = document.getElementById(targetId); | |
var text = ["<ol>"]; | |
for(var i = 0; i < count; ++i){ | |
text.push("<li>" + genPuzzle() + "</li>"); | |
} | |
text.push("</ol>"); | |
target.innerHTML = text.join("\n");; | |
} | |
function gen(){ | |
var count = parseInt(document.getElementById('count').value); | |
genPaper(count, 'result'); | |
} | |
</script> | |
<div id="control"> | |
题目数量: <input type="text" id="count" value="75" /> | |
<button onclick="gen();">生成题目</button> | |
</div> | |
<div id="result" > | |
</div> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment