棋牌-21点算法

21点游戏算法解析
本文介绍了一种用于实现21点棋牌游戏的算法。通过使用underscore库遍历牌组列表并计算所有可能的手牌得分组合,该算法能够有效处理包含特殊牌面(如A、J、Q、K)的情况,并自动过滤掉超过21点的无效组合。
publicHandler.cal = function(pokerList){
		var self = this;

		var list = [0];
		_.each(pokerList,function(poker){
			var point = poker.point;
				
			var list2 = []
			_.each(list,(item,index,arr)=>{
				// A可以被当作11点
				if(point=='A'){
					arr[index]+=1;
					list2.push(item+11);
				}
				//JQK
				else if(~'JQK'.indexOf(point)){
					arr[index]+=10;
				}
				// 普通点数
				else{
					arr[index] += (point-0);
				}
			});

			list = list.concat(list2);

			// 去重
			list = _.uniq(list);

			// 超过21的,过滤
			list = _.filter(list,item=>item<=21);
		});
		list = list.sort((a,b)=>{return b-a;});
		return list.length?list[0]:-1;
	};



棋牌21点的简单算法

用到了underscore

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值