math - 剪刀石头布。使用数学确定输赢/平局?

标签 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++;
        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++;
    }
}

我的问题是:编写这个函数的最优雅的方式是什么?

编辑:我正在寻找单线。

最佳答案

if (a == b) ties++;
else if ((a - b) % 3 == 1) wins++;
else losses++;

我需要确切地知道您使用哪种语言将其变成严格的单行...

对于 JavaScript(或其他具有奇怪模数的语言),请使用:
if (a == b) ties++;
else if ((a - b + 3) % 3 == 1) wins++;
else losses++;

关于math - 剪刀石头布。使用数学确定输赢/平局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11377117/

相关文章:

javascript - 在 HTML Canvas 上旋转多边形

algorithm - 移除最少数量的 Blade

puzzle - 不带空格地翻译摩尔斯电码

algorithm - 重组包含模数的公式

php - 如何计算固定数量的 PayPal 费用 (2.9% + .30)?

java - 将 "hashcode like"存储在数据库中作为 boolean 类字段的描述,以提高性能并使命名查询简短

java - 它的名字是什么?如何在 Java 中计算?

java - java 暴力模式搜索

algorithm - 如何从邻接矩阵matlab中获取距离矩阵

java - 无法在数据样本中找到模式