Skip to content

Instantly share code, notes, and snippets.

@ftao
Last active December 15, 2015 12:39
Show Gist options
  • Save ftao/5261845 to your computer and use it in GitHub Desktop.
Save ftao/5261845 to your computer and use it in GitHub Desktop.
生成四则运算的题目
<!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] = '(&nbsp; &nbsp; &nbsp;)';
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