Math 石头、布、剪刀。使用数学确定赢/输/平?
当我开始写这个函数时,我正在写一个石头剪刀游戏:Math 石头、布、剪刀。使用数学确定赢/输/平?,math,logic,puzzle,Math,Logic,Puzzle,当我开始写这个函数时,我正在写一个石头剪刀游戏: a是玩家一的移动,b是玩家二的移动。我需要弄清楚的是一号选手是赢了,还是输了,还是平手 //rock=0, paper=1, scissors=2 processMove(a, b) { if(a == b) ties++; else { if(a==0 && b==2) wins++; else if(a==0 && b==1) losses++;
a
是玩家一的移动,b
是玩家二的移动。我需要弄清楚的是一号选手是赢了,还是输了,还是平手
//rock=0, paper=1, scissors=2
processMove(a, b) {
if(a == b) ties++;
else {
if(a==0 && b==2) wins++;
else if(a==0 && b==1) losses++;
else if(a==1 && b==2) losses++;
else if(a==1 && b==0) wins++;
else if(a==2 && b==1) wins++;
else if(a==2 && b==0) losses++;
}
}
我的问题是:这个函数最优雅的编写方式是什么
编辑:我正在寻找一个单行程序。我想3x3矩阵会“更优雅”
char result = "TWLLTWWLT".charAt(a * 3 + b);
(编辑:忘记了
a
和b
已经是零原点。)我想你可以像这样使用terniary操作符-
if (b==0) a==1? wins++ : loss++;
if (b==1) a==1? loss++ : wins++;
if (b==2) a==1? loss++ : wins++;
我需要确切地知道你用哪种语言把它变成一个严格的一行
对于JavaScript(或具有奇怪模数的其他语言),请使用:
您可以使用一个简单的数学公式得出结果,然后与
进行比较,如果,如下所示:
var moves = {
'rock': 0,
'paper': 1,
'scissors': 2
};
var result = {
'wins': 0,
'losses': 0,
'ties': 0
};
var processMove = function (a, b) {
var processResult = (3 + b - a) % 3;
if (!processResult) {
++result['ties'];
} else if(1 == processResult) {
++result['losses'];
} else {
++result['wins'];
}
return result;
};
单行processMove
函数,不返回:
var processMove = function (a, b) {
((3 + b - a) % 3) ? 1 == ((3 + b - a) % 3) ? ++result.losses : ++result.wins : ++result.ties;
};
用java怎么做
结果=(comp-x)%3
寻找可读的正确代码比寻找一行程序要好得多。看看我对一个类似问题的回答:石头对剪刀不起作用:(0-2%3)=-2
。使用javascript
看起来缺少一对括号:((a-b)%3==1)。在C运算符中,模在运算顺序上高于减法。
var moves = {
'rock': 0,
'paper': 1,
'scissors': 2
};
var result = {
'wins': 0,
'losses': 0,
'ties': 0
};
var processMove = function (a, b) {
var processResult = (3 + b - a) % 3;
if (!processResult) {
++result['ties'];
} else if(1 == processResult) {
++result['losses'];
} else {
++result['wins'];
}
return result;
};
var processMove = function (a, b) {
((3 + b - a) % 3) ? 1 == ((3 + b - a) % 3) ? ++result.losses : ++result.wins : ++result.ties;
};
System.out.println (result);
if (result == 0 )// if the game is tie
{
System.out.println ("A Tie!") ;
}
else if (result == 1 || result == 2 )
{
//System.out.println (user + " " + "beats" + " " + computer_choice + " you win" );
System.out.println ("comp win");
}
else
{
System.out.println ("you win");
//System.out.println (computer_choice + " " + "beats" + " " + user + "you lose");
}