首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成数学问题

生成数学问题
EN

Code Golf用户
提问于 2013-03-08 00:17:20
回答 5查看 1.5K关注 0票数 7

使用数字0-10生成数学问题(加法、减法或乘法).提供用户是对还是错的反馈,并显示分数。

具体情况:

  • 必须生成加法、减法或乘法问题。
  • 使用的数字必须为0-10。
  • 每个问题都必须是同样的可能性。
  • 如果用户是正确的,必须打印“正确!”(加上感叹号)
  • 如果用户出错,必须打印“错误!”(加上感叹号)
  • 在提供正确或错误的反馈后,必须用以下规范显示分数:
    • 以“得分:”开头
    • 显示数字正确,然后显示“正确”。
    • 管道(|)分离
    • 显示数字错误,然后显示“错误”
    • 2条新的分隔线

  • 必须永远重复

对于计数字符,将使用文本机制计数器。

抽样会议:

代码语言:javascript
复制
1-7=-6
correct!
Score: 1 correct | 0 wrong

9+3=12
correct!
Score: 2 correct | 0 wrong

4*5=20
correct!
Score: 3 correct | 0 wrong

7-8=3
wrong!
Score: 3 correct | 1 wrong

1*1=3
wrong!
Score: 3 correct | 2 wrong

7+6=
EN

回答 5

Code Golf用户

发布于 2013-03-09 22:38:36

Javascript 169个字符

这里有一个不使用控制台的解决方案(这是否违反了规则?)但通过警报盒工作(我知道.):

代码语言:javascript
复制
for(c=w=0;r=Math.random;){prompt(x=~~(r()*9+1)+"+-*"[~~(r()*3)]+~~(r()*9+1))==eval(x)?(m="correct",c++):(m="wrong",w++);alert(m+"!\nScore: "+c+" correct | "+w+" wrong")}

打高尔夫球的尝试很弱,但这只是为了好玩,对吧?)

编辑: Ungolfed版本如下。我扩展了变量名,并将x的分配划分为aopb。逻辑是一样的。请记住,~~(X) == Math.floor(X)表示正X。这只是比较容易打字。

代码语言:javascript
复制
correct=wrong=0;
rand=Math.random;
while(1){
  a=~~(rand()*9+1);
  op="+-*"[~~(rand()*3)];
  b=~~(rand()*9+1);
  x=a+op+b;
  if(prompt(x)==eval(x)){msg="correct";correct++}
  else{msg="wrong";wrong++}
  alert(msg+"!\nScore: "+c+" correct | "+w+" wrong");
}
票数 2
EN

Code Golf用户

发布于 2013-08-06 04:41:30

C# -283个字符

这是我用C#编写的283个字符的解决方案:

代码语言:javascript
复制
var r=new Random();int a=0,b=0,x=0,y=0;var w="";Action C=()=>Console.WriteLine(w);for(;;){x=r.Next(11);y=r.Next(11);int[]R={x+y,x-y,x*y};w=""+x+"+-*"[x%3]+y+"=";C();var f=Console.ReadLine()==""+R[x%3];x=f?a++:b++;w=(f?"correct":"wrong")+"!\nScore:"+a+" correct | "+b+" wrong\n";C();}

有了更多的缩进,它看起来像是:

代码语言:javascript
复制
var r=new Random();
int a=0,b=0,x=0,y=0;
var w="";
Action C=()=>Console.WriteLine(w);
for(;;){
    x=r.Next(11);y=r.Next(11);
    int[] R={x+y,x-y,x*y};
    w=""+x+"+-*"[x%3]+y+"=";C();
    var f=Console.ReadLine()==""+R[x%3];
    x=f?a++:b++;
    w=(f?"correct":"wrong")+"!\nScore:"+a+" correct | "+b+" wrong\n";C();
}
票数 2
EN

Code Golf用户

发布于 2015-03-24 15:02:49

CJam,90字节

似乎我对这个问题有点晚了.因为我的语言,所以根据网站的规则,这个答案不能正式选择为赢家。但是我已经完成了最近一个问题的答案,这个问题被标记为这个问题的重复,我不想让它浪费掉,所以我对这个问题做了一些修改。

代码语言:javascript
复制
{Bmr3mr"+-*"=Bmr]_o'=o~\~li=:R["correct":C"wrong":W?'!N"Score:"SUR+:USCS'|SVR!+:VSWNN]o1}g

由于程序的交互性,无法使用在线解释器。您必须使用Java解释器

我通常会发布一个冗长的解释,但代码的工作方式尽可能简单。但这并不是说我在几分钟内就把这个答案说出来了,因为我花了相当多的时间去搜索和做一些小的优化。

票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/10850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档