具体情况:
|)分离对于计数字符,将使用文本机制计数器。
抽样会议:
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=发布于 2013-03-09 22:38:36
这里有一个不使用控制台的解决方案(这是否违反了规则?)但通过警报盒工作(我知道.):
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的分配划分为a、op和b。逻辑是一样的。请记住,~~(X) == Math.floor(X)表示正X。这只是比较容易打字。
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");
}发布于 2013-08-06 04:41:30
这是我用C#编写的283个字符的解决方案:
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();}有了更多的缩进,它看起来像是:
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();
}发布于 2015-03-24 15:02:49
似乎我对这个问题有点晚了.因为我的语言,所以根据网站的规则,这个答案不能正式选择为赢家。但是我已经完成了最近一个问题的答案,这个问题被标记为这个问题的重复,我不想让它浪费掉,所以我对这个问题做了一些修改。
{Bmr3mr"+-*"=Bmr]_o'=o~\~li=:R["correct":C"wrong":W?'!N"Score:"SUR+:USCS'|SVR!+:VSWNN]o1}g由于程序的交互性,无法使用在线解释器。您必须使用Java解释器。
我通常会发布一个冗长的解释,但代码的工作方式尽可能简单。但这并不是说我在几分钟内就把这个答案说出来了,因为我花了相当多的时间去搜索和做一些小的优化。
https://codegolf.stackexchange.com/questions/10850
复制相似问题