Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        /// <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);
        }