codewars算法题-酒局划拳

本文介绍了一种基于划拳规则的游戏算法实现。该算法通过将“拳”和“布”的手势转换为数字,并据此判断玩家猜数的正确性来决定胜负。文章详细解释了游戏规则并提供了具体的代码实现。

算法要求:
通过这个例子我终于明白划拳规则是什么了。
1. “拳”代表数字0,”布”代表数字5。猜中双方伸出的两只手所对应的数字和即为正确。
2. 如果某一方说的数字小于自己伸出的手代表的数字和或者减去自己伸出的数字和后大于10 ,则另一方赢。
eg:

game([20,"Fist Fist"], [10,"Palm Palm"]);
should return "B Win!"
game([5, "Palm Palm"], [10, "Palm Palm"]);  // 虽然B也猜错了,但是A说了一个不可能的数字
should return "B Win!"

代码如下:

function game(a,b) {
  // 对数字求和
  function getTimes (arrStr){
    arrStr = arrStr.replace(/Fist/ig, "0");
    arrStr = arrStr.replace(/Palm/ig, "5");
    var newArr = arrStr.split(" ");
    return Number(newArr[0]) + Number(newArr[1]);
  }
  var suma = Number(getTimes(a[1]));
  var sumb = Number(getTimes(b[1]));
  var sum =  suma + sumb ;

  if ( (sum == a[0] && sum != b[0]) || (suma <= a[0] && a[0] <= suma+10  && (b[0] < sumb || b[0] > sumb + 10)) ) {
    return "A Win!";
  } else if ( (sum != a[0] && sum == b[0]) || (sumb <= b[0] && b[0] <= sumb+10  && (a[0] < suma || a[0] > suma + 10)) ) {
    return "B Win!"
  } else {
    return "Draw!";
  } 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值