private int CaculateBonus_14C_Zhong2(IWinNumberAnalyzable checker) { var count = 0; //var anteCodeArray = "310,310,310,310,310,310,310,310,310,310,310,310,310,310".Split(','); var strL = new List <string>(); for (int i = 0; i < AnteCodeNumbers.Count(); i++) { var valu = AnteCodeNumbers[i]; AnteCodeNumbers[i] = "*"; strL.Add(string.Join(",", AnteCodeNumbers)); AnteCodeNumbers[i] = valu; } foreach (var item in strL) { var winCount = 0; var zhong = 0; var zhu = 1; var anteList = item.Split(','); for (int i = 0; i < TotalNumber; i++) { var ante = anteList[i]; if (ante == "*") { continue; } var win = checker.WinNumbers[i]; if (ante.Contains(win) || (IsEnableWildcard && win == Wildcard)) { zhong++; winCount += ante.Length - win.Length; if (ante.Length > 1 && win == Wildcard) { zhu *= ante.Length; } } } if (zhong == TotalNumber - 1) { for (int i = 0; i < zhu * winCount; i++) { count++; } } } return(count); }
/// <summary> /// 检查投注号码格式是否正确 /// </summary> /// <param name="antecode">投注号码</param> /// <param name="errMsg">错误消息</param> /// <returns>格式是否正确</returns> public bool CheckAntecode(string antecode, out string errMsg) { // 前置验证 - 彩种、玩法、投注号码 PreconditionAssert.IsNotEmptyString(GameCode, "检查投注号码格式前,必须设置彩种"); PreconditionAssert.IsNotEmptyString(GameType, "检查投注号码格式前,必须设置玩法"); PreconditionAssert.IsNotEmptyString(antecode, "必须传入非空的投注号码"); var list = antecode.Split('|'); if (list.Length > 1) { var dans = list[1].Split(new char[] { Spliter }, StringSplitOptions.RemoveEmptyEntries); DanNumbers = new int[dans.Length]; for (int i = 0; i < dans.Length; i++) { DanNumbers[i] = int.Parse(dans[i]); } if (DanNumbers.GroupBy(i => i).Count() != DanNumbers.Length) { errMsg = "胆码重复"; return(false); } } else { DanNumbers = new int[0]; } AnteCodeNumbers = list[0].Split(Spliter); if (AnteCodeNumbers.Length != TotalNumber) { errMsg = string.Format("投注号码必须是被\"{0}\"切分成 {1}个部分的字符串", Spliter, TotalNumber); return(false); } var orderAnalyzer = AnalyzerFactory.GetOrderAnalyzer(GameCode, GameType); var tmp = AnteCodeNumbers.Clone() as string[]; if (IsEnableWildcard) { tmp = AnteCodeNumbers.Where(a => { return(!a.Equals(Wildcard.ToString())); }).ToArray(); if (tmp.Length < BallNumber || tmp.Length > TotalNumber) { errMsg = string.Format("有效投注号码必须是\"{0} - {1}\"个号码", BallNumber, TotalNumber); return(false); } } if (tmp.Length == BallNumber && DanNumbers.Length > 0) { errMsg = "胆码设置错误 - " + antecode; return(false); } if (DanNumbers.Length >= BallNumber) { errMsg = "胆码设置错误,胆码必须小于 " + BallNumber + "个 - " + antecode; return(false); } foreach (var danIndex in DanNumbers) { var dan = AnteCodeNumbers[danIndex]; if (dan == Wildcard.ToString()) { errMsg = "胆码设置错误,对应胆码为通配符 - " + antecode; return(false); } } foreach (var item in tmp) { if (!orderAnalyzer.CheckOneAntecodeNumber(item, out errMsg)) { return(false); } } errMsg = ""; return(true); }