using System;
using System.Collections.Generic;
using System.Web;
using System.Linq;
using System.Text;
namespace CP.Common
{
    /// <summary>
    /// 走势图上的工具集合..
    /// </summary>
    public class ZstUtils
    {
        #region 快乐扑克3号码形态

        /// <summary>
        /// 快乐扑克3号码形态
        /// </summary>
        /// <param name="kjh"></param>
        /// <param name="hs"></param>
        /// <returns></returns>
        public static string GetTcsdKlpk3Hmxt(List<int> kjh, List<int> hs)
        {
            kjh.Sort();
            if (hs[0] == hs[1] && hs[1] == hs[2])
            {
                if (Math.Abs(kjh[2] - kjh[1]) == 1 && Math.Abs(kjh[1] - kjh[0]) == 1)
                    return "同花顺";
                else
                    return "同花";
            }
            else
            {
                if (Math.Abs(kjh[2] - kjh[1]) == 1 && Math.Abs(kjh[1] - kjh[0]) == 1)
                    return "顺子";
                else if (kjh[0] == kjh[1] && kjh[1] == kjh[2])
                    return "豹子";
                else if (kjh[0] != kjh[1] && kjh[0] != kjh[2] && kjh[1] != kjh[2])
                    return "散牌";
                else
                    return "对子";
            }
        }

        #endregion

        #region 获取山西泳坛夺金组选形态

        /// <summary>
        /// 获取山西泳坛夺金组选形态
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns>0:组选4(3个号码相同)   1:组选6(2对号码相同)  2:组选12(2个号码相同)  3:组选24(都不相同)</returns>
        public static int GetYtdjZxxt(List<int> kjh)
        {
            Dictionary<int, int> hmCount = new Dictionary<int, int>();
            for (var i = 0; i < kjh.Count; i++)
            {
                var cur = kjh[i];
                for (var j = i + 1; j < kjh.Count; j++)
                {
                    var hm = kjh[j];
                    if (hm == cur)
                    {
                        if (hmCount.Keys.Contains(hm))
                        {
                            hmCount[hm]++;
                        }
                        else
                        {
                            hmCount.Add(hm, 1);
                        }
                    }
                }
            }
            if (hmCount.Count == 0)
                return 3;
            else if (hmCount.Count == 1)
            {
                if (hmCount.ElementAt(0).Value == 6)
                    return 6;
                else if (hmCount.ElementAt(0).Value == 3)
                    return 0;
                else if (hmCount.ElementAt(0).Value == 1)
                    return 2;
            }
            return 1;
        }

        #endregion

        #region 大小相关方法

        /// <summary>
        /// 返回大小的状态,需要传中间值,小于中间值为小,大于等于中间值为大。
        /// </summary>
        /// <param name="n"></param>
        /// <param name="middle"></param>
        /// <returns></returns>
        public static int GetDxBymiddle(int n, int middle)
        {
            int r = 1;
            if (n < middle)
                r = 0;
            return r;
        }

        /// <summary>
        /// 返回0~9大小的状态
        /// 0=小
        /// 1=大
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int GetDx(int n)
        {
            return GetDxBymiddle(n, 5);
        }

        /// <summary>
        /// 大小形态
        /// </summary>
        /// <param name="num"></param>
        /// <param name="istyle"></param>
        /// <returns></returns>
        public static string Getdxxt(List<int> kjh, int middle)
        {
            StringBuilder result = new StringBuilder();
            int size = kjh.Count;
            for (int i = 0; i < size; i++)
            {
                if (GetDxBymiddle(kjh[i], middle) == 1)
                    result.Append("大");
                else
                    result.Append("小");
            }
            return result.ToString();
        }

        /// <summary>
        /// 大小形态
        /// </summary>
        /// <param name="num"></param>
        /// <param name="istyle"></param>
        /// <returns></returns>
        public static string GetDxxt(List<int> kjh, bool istyle = true)
        {
            StringBuilder result = new StringBuilder();
            int size = kjh.Count;
            for (int i = 0; i < size; i++)
            {
                if (istyle)
                {
                    if (kjh[i] > 4)
                        result.Append("<span class=\"wz1\">大</span>");
                    else
                        result.Append("<span class=\"wz2\">小</span>");
                }
                else
                {
                    if (kjh[i] > 4)
                        result.Append("大");
                    else
                        result.Append("小");
                }
            }

            return result.ToString();
        }

        /// <summary>
        /// 大小形态
        /// </summary>
        /// <param name="num"></param>
        /// <param name="istyle"></param>
        /// <returns></returns>
        public static string GetDxxtByMiddle(List<int> kjh, int middle, bool istyle = true)
        {
            StringBuilder result = new StringBuilder();
            int size = kjh.Count;
            for (int i = 0; i < size; i++)
            {
                if (istyle)
                {
                    if (kjh[i] >= middle)
                        result.Append("<span class=\"wz1\">大</span>");
                    else
                        result.Append("<span class=\"wz2\">小</span>");
                }
                else
                {
                    if (kjh[i] >= middle)
                        result.Append("大");
                    else
                        result.Append("小");
                }
            }

            return result.ToString();
        }

        /// <summary>
        /// 返回开奖号的大小形态
        /// 如:大大小
        /// 有样式
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static string GetDxxt(int num, bool istyle = true)
        {
            List<int> kjh = GetNumList(num);
            StringBuilder result = new StringBuilder();
            int size = kjh.Count;
            for (int i = 0; i < size; i++)
            {
                if (istyle)
                {
                    if (kjh[i] > 4)
                        result.Append("<span class=\"wz1\">大</span>");
                    else
                        result.Append("<span class=\"wz2\">小</span>");
                }
                else
                {
                    if (kjh[i] > 4)
                        result.Append("大");
                    else
                        result.Append("小");
                }
            }

            return result.ToString();
        }

        /// <summary>
        /// 东方6+1的大小比
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static string GetDf61Dxb(List<int> list)
        {
            return GetDxb(list, 5);
        }

        /// <summary>
        /// 22选5 大小比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string Get22x5Dxb(List<int> list)
        {
            return GetDxb(list, 12);
        }

        /// <summary>
        /// 25选5 大小比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string Get25x5Dxb(List<int> list)
        {
            return GetDxb(list, 13);
        }

        /// <summary>
        /// 25选5 大小比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string Get26x5Dxb(List<int> list)
        {
            return GetDxb(list, 14);
        }

        /// <summary>
        /// 25选7 大小比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string Get25x7Dxb(List<int> list)
        {
            return GetDxb(list, 13);
        }

        /// <summary>
        /// 24选7 大小比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string Get24x7Dxb(List<int> list)
        {
            return GetDxb(list, 12);
        }
        /// <summary>
        /// 20选5 大小比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string Get20x5Dxb(List<int> list)
        {
            return GetDxb(list, 11);
        }

        /// <summary>
        /// 18x7 大小比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string Get18x7Dxb(List<int> list)
        {
            return GetDxb(list, 10);
        }
        /// <summary>
        /// 30选5
        /// </summary>
        /// <param name="kjh"></param>
        /// <param name="istyle"></param>
        /// <returns></returns>
        public static string Get30x5Dxxt(List<int> kjh, bool istyle = true)
        {
            StringBuilder result = new StringBuilder();
            int size = kjh.Count;
            for (int i = 0; i < size; i++)
            {
                if (istyle)
                {
                    if (GetDxBymiddle(kjh[i], 16) == 1)
                        result.Append("<span class=\"wz1\">大</span>");
                    else
                        result.Append("<span class=\"wz2\">小</span>");
                }
                else
                {
                    if (GetDxBymiddle(kjh[i], 12) == 1)
                        result.Append("大");
                    else
                        result.Append("小");
                }
            }

            return result.ToString();
        }

        /// <summary>
        /// 22选5 大小形态
        /// </summary>
        /// <param name="kjh"></param>
        /// <param name="istyle"></param>
        /// <returns></returns>
        public static string Get22x5Dxxt(List<int> kjh, bool istyle = true)
        {
            StringBuilder result = new StringBuilder();
            int size = kjh.Count;
            for (int i = 0; i < size; i++)
            {
                if (istyle)
                {
                    if (GetDxBymiddle(kjh[i], 12) == 1)
                        result.Append("<span class=\"wz1\">大</span>");
                    else
                        result.Append("<span class=\"wz2\">小</span>");
                }
                else
                {
                    if (GetDxBymiddle(kjh[i], 12) == 1)
                        result.Append("大");
                    else
                        result.Append("小");
                }
            }

            return result.ToString();
        }
        /// <summary>
        /// 20选5 大小形态
        /// </summary>
        /// <param name="kjh"></param>
        /// <param name="istyle"></param>
        /// <returns></returns>
        public static string Get20x5Dxxt(List<int> kjh, bool istyle = true)
        {
            StringBuilder result = new StringBuilder();
            int size = kjh.Count;
            for (int i = 0; i < size; i++)
            {
                if (istyle)
                {
                    if (GetDxBymiddle(kjh[i], 11) == 1)
                        result.Append("<span class=\"wz1\">大</span>");
                    else
                        result.Append("<span class=\"wz2\">小</span>");
                }
                else
                {
                    if (GetDxBymiddle(kjh[i], 11) == 1)
                        result.Append("大");
                    else
                        result.Append("小");
                }
            }

            return result.ToString();
        }

        /// <summary>
        /// 好彩1大小
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int GetHc1Dx(int n)
        {
            return GetDxBymiddle(n, 19);
        }


        /// <summary>
        /// 七乐彩大小比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetQlcDxb(string[] kjh)
        {
            string bz = string.Empty;
            if (kjh != null && kjh.Length > 0)
            {
                int d = 0;
                int x = 0;
                for (int i = 0; i < kjh.Length; i++)
                {
                    if (TypeConverter.StrToInt(kjh[i], 0) > 15)
                        d++;
                    else
                        x++;
                }
                bz = d.ToString() + ":" + x.ToString();
            }

            return bz;
        }

        /// <summary>
        /// 七乐彩大小比
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static string GetQlcDxb(List<int> list)
        {
            return GetDxb(list, 16);
        }

        /// <summary>
        /// 7位数和值大小
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int Get7hwhz(int n)
        {
            return GetDxBymiddle(n, 33);
        }

        /// <summary>
        /// 返回p5和值大小
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int GetP5HzDx(int n)
        {
            return GetDxBymiddle(n, 23);
        }

        /// <summary>
        /// 15x5大小
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int Get15x5Dx(int n)
        {
            return GetDxBymiddle(n, 8);
        }

        /// <summary>
        /// 11选5大小
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int Get11x5Dx(int n)
        {
            return GetDxBymiddle(n, 6);
        }

        /// <summary>
        /// 11选5的大小形态
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string Get11x5Dxxt(List<int> kjh)
        {
            string xt = string.Empty;
            if (kjh != null && kjh.Count > 0)
            {
                foreach (int i in kjh)
                {
                    if (Get11x5Dx(i) == 1)
                        xt = xt + "大";
                    else
                        xt = xt + "小";
                }
            }
            return xt;
        }


        /// <summary>
        /// 七星彩和值大小
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int GetQxcHzDx(int n)
        {
            return GetDxBymiddle(n, 33);
        }

        /// <summary>
        /// 3D/p3和值大小
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int GetHzDx(int n)
        {
            return GetDxBymiddle(n, 14);
        }

        /// <summary>
        /// 福建36x7
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static string GetTcfj36x7DXB(List<int> list)
        {
            return GetDxb(list, 19);
        }

        /// <summary>
        /// 31x7大小比
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static string GetTcfj31x7DXB(List<int> list)
        {
            return GetDxb(list, 16);
        }

        /// <summary>
        /// 大乐透后区大小比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetDltHqDxt(string[] kjh)
        {
            string bz = string.Empty;
            if (kjh != null && kjh.Length > 0)
            {
                int d = 0;
                int x = 0;
                for (int i = 0; i < kjh.Length; i++)
                {
                    if (GetDxBymiddle(TypeConverter.StrToInt(kjh[i], 0), 7) == 1)
                        d++;
                    else
                        x++;
                }
                bz = d.ToString() + ":" + x.ToString();
            }

            return bz;
        }

        /// <summary>
        /// 大乐透前区大小比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetDltDxb(string[] kjh)
        {
            string bz = string.Empty;
            if (kjh != null && kjh.Length > 0)
            {
                int d = 0;
                int x = 0;
                for (int i = 0; i < kjh.Length; i++)
                {
                    if (GetDxBymiddle(TypeConverter.StrToInt(kjh[i], 0), 18) == 1)
                        d++;
                    else
                        x++;
                }
                bz = d.ToString() + ":" + x.ToString();
            }

            return bz;
        }

        /// <summary>
        /// 双色球红球大小比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetSSqDxb(string[] kjh)
        {
            string bz = string.Empty;
            if (kjh != null && kjh.Length > 0)
            {
                int d = 0;
                int x = 0;
                for (int i = 0; i < kjh.Length; i++)
                {
                    if (GetDxBymiddle(TypeConverter.StrToInt(kjh[i], 0), 17) == 1)
                        d++;
                    else
                        x++;
                }
                bz = d.ToString() + ":" + x.ToString();
            }

            return bz;
        }

        /// <summary>
        /// 双色球红球大小比
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static string GetSsqDxb(List<int> list)
        {
            return GetDxb(list, 17);
        }

        /// <summary>
        /// 大乐透前区大小比
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static string GetDltDxb(List<int> list)
        {
            return GetDxb(list, 18);
        }

        /// <summary>
        /// 15x5大小比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetHd15x5Dxb(List<int> kjh)
        {
            return GetDxb(kjh, 7);
        }




        /// <summary>
        /// 15x5的的大小形态
        /// </summary>
        /// <param name="kjh"></param>
        /// <param name="istyle"></param>
        /// <returns></returns>
        public static string GetHd15x5Dxxt(List<int> kjh, bool istyle = true)
        {
            StringBuilder result = new StringBuilder();
            int size = kjh.Count;
            for (int i = 0; i < size; i++)
            {
                if (istyle)
                {
                    if (GetDxBymiddle(kjh[i], 8) == 1)
                        result.Append("<span class=\"wz1\">大</span>");
                    else
                        result.Append("<span class=\"wz2\">小</span>");
                }
                else
                {
                    if (GetDxBymiddle(kjh[i], 8) == 1)
                        result.Append("大");
                    else
                        result.Append("小");
                }
            }

            return result.ToString();
        }

        /// <summary>
        /// 广东11选5大小比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetGd11x5Dxb(List<int> kjh)
        {
            return GetDxb(kjh, 6);
        }

        /// <summary>
        /// 湖北11选5大小比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetHb11x5Dxb(List<int> kjh)
        {
            return GetDxb(kjh, 6);
        }

        /// <summary>
        /// 大小比
        /// </summary>
        /// <param name="kjh">数据</param>
        /// <param name="middle">中间数</param>
        /// <returns></returns>
        public static string GetDxb(List<int> kjh, int middle)
        {
            int d = 0;
            int x = 0;
            for (int i = 0; i < kjh.Count; i++)
            {
                if (GetDxBymiddle(kjh[i], middle) == 1)
                    d++;
                else
                    x++;
            }
            return d.ToString() + ":" + x.ToString();
        }

        /// <summary>
        /// 旧的大小比方法
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static string GetDxb(int num)
        {
            List<int> kjh = GetNumList(num);
            return GetDxb(kjh, 5);
        }

        #endregion

        #region 012路相关方法

        /// <summary>
        /// 返回某个号码的012路形态
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string Get012Xt(List<int> k)
        {
            StringBuilder xt = new StringBuilder();
            for (int i = 0; i < k.Count; i++)
            {
                xt.Append(Get012(k[i]));
            }
            return xt.ToString();
        }

        /// <summary>
        /// 某数字的012路形态
        /// 返回 0 1 2 
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int Get012(int n)
        {
            return n % 3;
        }

        /// <summary>
        /// 获取和尾的  升平降   0:升   1:平   2:降
        /// </summary>
        /// <param name="hw"></param>
        /// <param name="uphw"></param>
        /// <param name="i">第几行</param>
        /// <returns></returns>
        public static int GetSpj(int hw, int uphw = 0, int i = 0)
        {
            if (i == 0)
                return 1;
            else
            {
                if (hw > uphw)
                    return 0;
                else if (hw == uphw)
                    return 1;
                else
                    return 2;
            }
        }

        /// <summary>
        /// 通用的012个数路比
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static string GetCommon012b(List<int> list)
        {
            string bz = string.Empty;
            if (list != null && list.Count > 0)
            {
                int a = 0;
                int b = 0;
                int c = 0;
                for (int i = 0; i < list.Count; i++)
                {
                    if (Get012(list[i]) == 0)
                        a++;
                    if (Get012(list[i]) == 1)
                        b++;
                    if (Get012(list[i]) == 2)
                        c++;
                }
                bz = a.ToString() + ":" + b.ToString() + ":" + c.ToString();
            }

            return bz;
        }


        /// <summary>
        /// 取某个开奖号某路的个数
        /// 如开奖号258的0路号码个数为0
        /// 139的0路号码个数为2
        /// </summary>
        /// <param name="n"></param>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int Get012Count(int n, List<int> k)
        {
            int count = 0;
            for (int i = 0; i < k.Count; i++)
            {
                if (k[i] % 3 == n)
                    count++;
            }
            return count;
        }
        #endregion

        #region 质合相关方法
        /// <summary>
        /// 通用求质合 质合 0为合 1为质(适用0-100)
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int GetZh(int n)
        {
            //0~100
            List<int> zs = new List<int> { 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 };
            if (zs.Contains(n))
                return 1;
            else
                return 0;
        }

        /// <summary>
        /// 通用求质合比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetZhb(List<int> kjh)
        {
            string bz = string.Empty;
            if (kjh != null && kjh.Count > 0)
            {
                int h = 0;
                int z = 0;
                for (int i = 0; i < kjh.Count; i++)
                {
                    if (GetZh(kjh[i]) == 0)
                        h++;
                    else
                        z++;
                }
                bz = z.ToString() + ":" + h.ToString();
            }
            return bz;
        }

        /// <summary>
        /// 通用质合比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetZhb(string[] kjh)
        {
            string bz = string.Empty;
            if (kjh != null && kjh.Length > 0)
            {
                int z = 0;
                int h = 0;
                for (int i = 0; i < kjh.Length; i++)
                {
                    if (GetZh(TypeConverter.StrToInt(kjh[i], 0)) == 1)
                        z++;
                    if (GetZh(TypeConverter.StrToInt(kjh[i], 0)) == 0)
                        h++;
                }
                bz = z.ToString() + ":" + h.ToString();
            }
            return bz;
        }


        /// <summary>
        /// 质合形态
        /// </summary>
        /// <param name="kjh"></param>
        /// <param name="istyle"></param>
        /// <returns></returns>
        public static string GetZhxt(List<int> kjh, bool istyle = true)
        {
            StringBuilder result = new StringBuilder();
            for (int i = 0; i < kjh.Count; i++)
            {
                if (istyle)
                {
                    if (GetZh(kjh[i]) == 0)
                        result.Append("<span class=\"wz3\">合</span>");
                    else
                        result.Append("<span class=\"wz4\">质</span>");
                }
                else
                {
                    if (GetZh(kjh[i]) == 0)
                        result.Append("合");
                    else
                        result.Append("质");
                }
            }

            return result.ToString();
        }

        /// <summary>
        /// 开奖号的质合形态
        /// </summary>
        /// <param name="kjh"></param>
        /// <param name="istyle">是否带样式输出</param>
        /// <returns></returns>
        public static string GetZhxt(int num, bool istyle = true)
        {
            List<int> kjh = GetNumList(num);
            StringBuilder result = new StringBuilder();
            for (int i = 0; i < kjh.Count; i++)
            {
                if (istyle)
                {
                    if (GetZh(kjh[i]) == 0)
                        result.Append("<span class=\"wz3\">合</span>");
                    else
                        result.Append("<span class=\"wz4\">质</span>");
                }
                else
                {
                    if (GetZh(kjh[i]) == 0)
                        result.Append("合");
                    else
                        result.Append("质");
                }
            }

            return result.ToString();
        }

        #endregion

        #region 奇偶相关方法
        /// <summary>
        /// 返回奇偶状态
        /// 0=偶
        /// 1=奇
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int GetJo(int n)
        {
            if (n % 2 == 0)
                return 0;
            else
                return 1;
        }


        /// <summary>
        /// 奇偶比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetJob(List<int> kjh)
        {
            int j = 0;
            int o = 0;
            for (int i = 0; i < kjh.Count; i++)
            {
                if (GetJo(kjh[i]) == 0)
                    o++;
                else
                    j++;
            }
            return j.ToString() + ":" + o.ToString();
        }

        /// <summary>
        /// 奇偶比
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetJob(string[] kjh)
        {
            string bz = string.Empty;
            if (kjh != null && kjh.Length > 0)
            {
                int j = 0;
                int o = 0;
                for (int i = 0; i < kjh.Length; i++)
                {
                    if (GetJo(TypeConverter.StrToInt(kjh[i], 0)) == 0)
                        o++;
                    else
                        j++;
                }
                bz = j.ToString() + ":" + o.ToString();
            }

            return bz;
        }

        /// <summary>
        /// 奇偶比
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static string GetJob(int num)
        {
            List<int> kjh = GetNumList(num);
            return GetJob(kjh);
        }


        /// <summary>
        /// 返回开奖号的奇偶形态
        /// 如:奇偶偶
        /// </summary>
        /// <param name="num"></param>
        /// <param name="istyle">是否带样式输出</param>
        /// <returns></returns>
        public static string GetJoxt(int num, bool istyle = true)
        {
            List<int> kjh = GetNumList(num);
            StringBuilder result = new StringBuilder();
            for (int i = 0; i < kjh.Count; i++)
            {
                if (istyle)
                {
                    if (GetJo(kjh[i]) == 0)
                        result.Append("<span class=\"wz3\">偶</span>");
                    else
                        result.Append("<span class=\"wz4\">奇</span>");
                }
                else
                {
                    if (GetJo(kjh[i]) == 0)
                        result.Append("偶");
                    else
                        result.Append("奇");
                }
            }

            return result.ToString();
        }


        /// <summary>
        /// 奇偶形态
        /// </summary>
        /// <param name="num"></param>
        /// <param name="istyle"></param>
        /// <returns></returns>
        public static string GetJoxt(List<int> kjh, bool istyle = true)
        {
            StringBuilder result = new StringBuilder();
            for (int i = 0; i < kjh.Count; i++)
            {
                if (istyle)
                {
                    if (GetJo(kjh[i]) == 0)
                        result.Append("<span class=\"wz3\">偶</span>");
                    else
                        result.Append("<span class=\"wz4\">奇</span>");
                }
                else
                {
                    if (GetJo(kjh[i]) == 0)
                        result.Append("偶");
                    else
                        result.Append("奇");
                }
            }

            return result.ToString();
        }

        /// <summary>
        /// 返回大乐透后区大小形态,必顺序传入参数
        /// </summary>
        /// <param name="n6"></param>
        /// <param name="n7"></param>
        /// <returns></returns>
        public static string GetDltHqJoxt(int n6, int n7)
        {
            string n6jo = "奇";
            string n7jo = "奇";
            if (n6 % 2 == 0)
                n6jo = "偶";
            if (n7 % 2 == 0)
                n7jo = "偶";
            return (n6jo + n7jo).ToString().Trim();
        }

        #endregion

        #region 重号/连号个数/连号对数
        /// <summary>
        /// 通用的
        /// 计算重号个数
        /// </summary>
        /// <param name="kjh1"></param>
        /// <param name="kjh2"></param>
        /// <returns></returns>
        public static int GetChCount(List<int> kjh1, List<int> kjh2)
        {
            return kjh1.Intersect(kjh2).ToList().Count;
        }

        /// <summary>
        /// 广东11选5连号计算
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetGd11x5LhCount(List<int> _kjh)
        {
            int c = 0;
            List<int> kjh = new List<int>(_kjh);

            if (kjh != null && kjh.Count > 0)
            {
                kjh.Sort();
                for (int i = 0; i < kjh.Count; i++)
                {
                    if (i > 0 && (kjh[i] - kjh[i - 1] == 1))
                        c++;
                }
                if (kjh[kjh.Count - 1] - kjh[0] == 10)
                    c++;
                if (c > 0)
                    c = c + 1;

            }
            return c;
        }

        public static int GetGd11x5LhDsCount(List<int> _kjh)
        {
            int c = 0;
            List<int> kjh = new List<int>(_kjh);
            if (kjh.Count > 0)
            {
                kjh.Sort();
                for (int i = 0; i < kjh.Count; i++)
                {
                    if (i > 0 && (kjh[i] - kjh[i - 1]) == 1)
                        c++;
                }
                if (kjh[kjh.Count - 1] - kjh[0] == 10)
                    c++;
            }
            return c;
        }

        /// <summary>
        /// 广东11选5前三形态
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetGd11x5Xt(List<int> kjh)
        {
            int c = 0;
            if (kjh != null && kjh.Count > 0)
            {
                if (kjh[0] < kjh[1] && kjh[1] < kjh[2])
                    c = 1;
                else if (kjh[0] > kjh[1] && kjh[1] > kjh[2])
                    c = 2;
                else if (kjh[1] > kjh[0] && kjh[1] > kjh[2])
                    c = 3;
                else if (kjh[0] > kjh[1] && kjh[1] < kjh[2])
                    c = 4;
            }

            return c;
        }

        /// <summary>
        /// 通用的
        /// 计算连号个数
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetLhCount(List<int> _kjh)
        {
            int c = 0;
            List<int> kjh = new List<int>(_kjh);
            if (kjh != null && kjh.Count > 0)
            {
                kjh.Sort();
                for (int i = 0; i < kjh.Count; i++)
                {
                    if (i > 0 && (kjh[i] - kjh[i - 1]) == 1)
                        c++;
                }
                if (c > 0)
                    c = c + 1;
            }
            return c;
        }

        /// <summary>
        /// 通用的
        /// 计算连号个数--高频-新的连号数统计
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static Dictionary<int, int> GetLhCountGp(List<int> _kjh)
        {
            Dictionary<int, int> dic = new Dictionary<int, int>();
            List<int> kjh = new List<int>(_kjh);
            if (kjh != null && kjh.Count > 0)
            {
                kjh.Sort();
                for (int i = 0; i < kjh.Count; i++)
                {
                    if (i > 0 && (kjh[i] - kjh[i - 1]) == 1)
                    {
                        if (dic.Keys.Contains(i - 1))
                        {
                            dic.Add(i, dic[i - 1] + 1);
                            dic.Remove(i - 1);
                        }
                        else
                        {
                            dic.Add(i, 2);//第i个位置2连
                        }
                    }
                }
            }
            if (dic.Count == 0)
                dic.Add(0, 0);//零连号,无连号
            return dic;
        }

        /// <summary>
        /// 连号对数
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetLhDsCount(List<int> _kjh)
        {
            int c = 0;
            List<int> kjh = new List<int>(_kjh);
            if (kjh.Count > 0)
            {
                kjh.Sort();
                for (int i = 0; i < kjh.Count; i++)
                {
                    if (i > 0 && (kjh[i] - kjh[i - 1]) == 1)
                        c++;
                }
            }
            return c;
        }

        /// <summary>
        /// 双色球连号的对数
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetSsqRedLhCount(string[] os)
        {
            List<int> kjh = new List<int>();
            if (os != null && os.Length > 0)
            {
                for (int i = 0; i < os.Length; i++)
                {
                    kjh.Add(TypeConverter.StrToInt(os[i], 0));
                }
            }
            return GetLhDsCount(kjh);
        }


        #endregion


        /// <summary>
        /// 求双色球红球的和值
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetSsqRedHz(string[] kjh)
        {
            int hz = 0;
            if (kjh != null && kjh.Length > 0)
            {
                for (int i = 0; i < kjh.Length; i++)
                {
                    hz = hz + TypeConverter.StrToInt(kjh[i], 0);
                }
            }
            return hz;
        }


        /// <summary>
        /// 返回某蓝球是否属于某个区间
        /// </summary>
        /// <param name="qj"></param>
        /// <param name="val"></param>
        /// <returns></returns>
        public static bool GetSsqBlueSq(int qj, int val)
        {
            bool flag = false;
            List<int> b1 = new List<int> { 1, 2, 3, 4 };
            List<int> b2 = new List<int> { 5, 6, 7, 8 };
            List<int> b3 = new List<int> { 9, 10, 11, 12 };
            List<int> b4 = new List<int> { 13, 14, 15, 16 };

            if (qj == 1)
                return b1.Contains(val);

            if (qj == 2)
                return b2.Contains(val);

            if (qj == 3)
                return b3.Contains(val);

            if (qj == 4)
                return b4.Contains(val);

            return flag;

        }

        /// <summary>
        /// 得到距离开奖的时间差
        /// </summary>
        /// <param name="nowtime">现在时间</param>
        /// <param name="kjtime">开奖时间</param>
        /// <param name="days">过期时间 增加的天数</param>
        /// <returns>时间差</returns>
        public static TimeSpan KjTimeDiff(DateTime nowtime, DateTime kjtime)
        {
            TimeSpan ts = new TimeSpan();
            if (kjtime > nowtime)
            {
                TimeSpan ts1 = new TimeSpan(nowtime.Ticks);
                TimeSpan ts2 = new TimeSpan(kjtime.Ticks);
                ts = ts1.Subtract(ts2).Duration();

            }
            else
            {
                TimeSpan ts1 = new TimeSpan(nowtime.Ticks);
                TimeSpan ts2 = new TimeSpan(nowtime.Ticks);
                ts = ts1.Subtract(ts2).Duration();

            }
            return ts;
        }

        /// <summary>
        /// 将日期转换成星期几
        /// </summary>
        /// <param name="date"></param>
        /// <returns></returns>
        public static string GetWday(DateTime date)
        {
            DateTime dt = date;
            string wday = "";
            switch (dt.DayOfWeek)
            {
                case DayOfWeek.Monday:
                    wday = "星期一"; break;
                case DayOfWeek.Tuesday:
                    wday = "星期二"; break;
                case DayOfWeek.Wednesday:
                    wday = "星期三"; break;
                case DayOfWeek.Thursday:
                    wday = "星期四"; break;
                case DayOfWeek.Friday:
                    wday = "星期五"; break;
                case DayOfWeek.Saturday:
                    wday = "星期六"; break;
                case DayOfWeek.Sunday:
                    wday = "星期日"; break;
            }
            return wday;
        }

        /// <summary>
        /// 计算出双色球红球中尾数不相同的个数
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetSsqRedWsCount(string[] os)
        {
            List<int> kjh = new List<int>();
            if (os != null && os.Length > 0)
            {
                for (int i = 0; i < os.Length; i++)
                {
                    kjh.Add(TypeConverter.StrToInt(os[i], 0));
                }
            }

            List<int> wss = new List<int>();

            for (int i = 0; i < kjh.Count; i++)
            {
                int ws = GetHw(kjh[i]);
                if (!wss.Contains(ws))
                    wss.Add(ws);
            }

            return wss.Count;
        }



        /// <summary>
        /// 判断两个List int 列表是否有交集数据
        /// </summary>
        /// <param name="list1"></param>
        /// <param name="list2"></param>
        /// <returns></returns>
        public static bool GetNumMix(List<int> list1, List<int> list2)
        {
            return list1.Intersect(list2).ToList().Count > 0 ? true : false;
        }


        #region 大乐透相关方法 


        /// <summary>
        /// 返回大乐透后区奇偶形态,必顺序传入参数
        /// </summary>
        /// <param name="n6"></param>
        /// <param name="n7"></param>
        /// <returns></returns>
        public static string GetDltHqDxxt(int n6, int n7)
        {
            string n6dx = "小";
            string n7dx = "小";
            if (n6 > 6)
                n6dx = "大";
            if (n7 > 6)
                n7dx = "大";
            return (n6dx + n7dx).ToString().Trim();
        }


        #endregion


        /// <summary>
        /// 返回某个组三号码里的相同号码
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetZ3Num(int kjh)
        {
            string result = string.Empty;
            List<int> k = GetNumList(kjh);
            int n = 0;
            if (k[0] == k[1])
                return k[0];
            if (k[1] == k[2])
                return k[1];
            if (k[0] == k[2])
                return k[0];
            return n;
        }

        /// <summary>
        /// 返回开个开奖号组三形态
        /// AAB
        /// ABA
        /// BAA
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetZ3Xt(int kjh)
        {
            string result = string.Empty;
            List<int> k = GetNumList(kjh);
            if (k != null)
            {
                if (k[0] == k[1])
                    result = "AAB";
                if (k[1] == k[2])
                    result = "BAA";
                if (k[0] == k[2])
                    result = "ABA";
            }
            return result;
        }




        /// <summary>
        /// 试机号和开奖号的比较
        /// 组选同号 个数
        /// </summary>
        /// <param name="sjh"></param>
        /// <param name="kjh"></param>
        /// <returns>0 1 2 3</returns>
        public static int GetZxth(int sjh, int kjh)
        {
            int result = 0;
            List<int> s = GetNumList(sjh);
            List<int> k = GetNumList(kjh);

            for (int i = 0; i < s.Count; i++)
            {
                if (k.Contains(s[i]))
                    result++;
            }

            return result;
        }

        /// <summary>
        /// 试机号和开奖号的比较
        /// 组选同号 个数
        /// </summary>
        /// <param name="sjh"></param>
        /// <param name="kjh"></param>
        /// <returns>0 1 2 3</returns>
        public static int GetZxth(List<int> sjh, List<int> kjh)
        {
            int result = 0;
            for (int i = 0; i < sjh.Count; i++)
            {
                if (kjh.Contains(sjh[i]))
                    result++;
            }

            return result;
        }

        /// <summary>
        /// 试机号和开奖号的
        /// 直选同号比较
        /// </summary>
        /// <param name="sjh"></param>
        /// <param name="kjh"></param>
        /// <returns>返回3个长度的list,确认是否同号</returns>
        public static List<bool> GetZxtw(int sjh, int kjh)
        {
            List<bool> list = new List<bool> { false, false, false };

            List<int> s = GetNumList(sjh);
            List<int> k = GetNumList(kjh);
            for (int i = 0; i < s.Count; i++)
            {
                if (k[i] == s[i])
                    list[i] = true;
            }

            return list;
        }

        /// <summary>
        /// 试机号和开奖号的
        /// 直选同号比较
        /// </summary>
        /// <param name="sjh"></param>
        /// <param name="kjh"></param>
        /// <returns>返回3个长度的list,确认是否同号</returns>
        public static List<bool> GetZxtw(List<int> sjh, List<int> kjh)
        {
            List<bool> list = new List<bool> { false, false, false };

            for (int i = 0; i < sjh.Count; i++)
            {
                if (kjh[i] == sjh[i])
                    list[i] = true;
            }

            return list;
        }


        /// <summary>
        /// 把某个数字拆分成1 2 3 的形式
        /// 如980成9 8 0
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static List<int> GetNumList(int num)
        {
            //359
            List<int> nums = new List<int>();
            if (num < 0)
            {
                nums.Add(-1);
                nums.Add(-1);
                nums.Add(-1);
                return nums;
            }
            int b = num / 100;
            int s = (num - b * 100) / 10;
            int g = num - (b * 100 + s * 10);
            nums.Add(b);
            nums.Add(s);
            nums.Add(g);

            return nums;
        }


        /// <summary>
        /// 15x5是否4连号..
        /// 1为true 0为false
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetHd15x5_4lh(List<int> _kjh)
        {
            int c = 0;
            List<int> kjh = new List<int>(_kjh);
            if (kjh != null && kjh.Count > 0)
            {
                kjh.Sort();
                for (int i = 0; i < kjh.Count; i++)
                {
                    if (i > 0 && (kjh[i] - kjh[i - 1]) == 1 && Math.Abs(kjh[i - 1] - kjh[i]) == 1)
                        c++;
                    else if (c < 3)
                        c = 0;
                }
            }
            if (c >= 3)
                return 1;

            return 0;
        }

        /// <summary>
        /// 22x5是否3连号..
        /// 1为true 0为false
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetIs3lh(List<int> _kjh)
        {
            int c = 0;
            List<int> kjh = new List<int>(_kjh);
            if (kjh != null && kjh.Count > 0)
            {
                kjh.Sort();
                for (int i = 0; i < kjh.Count; i++)
                {
                    if (i > 0 && (kjh[i] - kjh[i - 1]) == 1 && Math.Abs(kjh[i - 1] - kjh[i]) == 1)
                        c++;
                    else if (c < 3)
                        c = 0;
                }
            }
            if (c >= 2)
                return 1;

            return 0;
        }



        /// <summary>
        /// 某个开奖号是否连号
        /// 145 905这种
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetLh(int num)
        {
            string result = "否";
            List<int> kds = GetKdList(num);
            if (kds != null && kds.Count > 0)
            {
                for (int i = 0; i < kds.Count; i++)
                {
                    if (kds[i] == 1 || kds[i] == 9)
                    {
                        result = "是";
                        return result;
                    }
                }
            }

            return result;
        }

        /// <summary>
        /// 某个开奖号是否是半顺子、顺子
        /// 012  045这种
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static string GetSZ(int num)
        {
            string result = "否";

            List<int> kds = GetKdList(num);

            if (kds != null && kds.Count > 0)
            {
                if (kds[0] == 2 && kds[1] == 1 && kds[2] == 1)
                {
                    result = "顺";
                    return result;
                }

                for (int i = 0; i < kds.Count; i++)
                {
                    if (kds[i] == 1)
                    {
                        result = "半";
                        return result;
                    }
                }
            }

            return result;
        }

        /// <summary>
        /// 判断是否有重号,适用3D
        /// </summary>
        /// <param name="kjh1"></param>
        /// <param name="kjh2"></param>
        /// <returns></returns>
        public static string GetCh(int num1, int num2)
        {
            string result = "否";

            List<int> kjh1 = GetNumList(num1);
            List<int> kjh2 = GetNumList(num2);

            if (kjh1.Intersect(kjh2).ToList().Count > 0)
                result = "是";

            return result;
        }

        /// <summary>
        /// 返回开奖号对应的组选二码组合
        /// 
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static List<string> Get2m(List<int> _kjh)
        {
            List<string> list = new List<string>();
            List<int> kjh = new List<int>(_kjh);

            kjh.Sort();
            list.Add(kjh[0].ToString() + kjh[1].ToString());
            list.Add(kjh[0].ToString() + kjh[2].ToString());
            list.Add(kjh[1].ToString() + kjh[2].ToString());

            return list;
        }

        /// <summary>
        /// 返回某个开奖号码的区段
        /// 返回值 a b c d
        /// a:000~249
        /// b:250~499
        /// c:500~749
        /// d:750~999
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetQd(int kjh)
        {
            string result = string.Empty;
            if (kjh >= 0 && kjh < 250)
                result = "A";

            if (kjh >= 250 && kjh < 500)
                result = "B";

            if (kjh >= 500 && kjh < 750)
                result = "C";

            if (kjh >= 750 && kjh < 1000)
                result = "D";

            return result;
        }

        /// <summary>
        /// 返回某个开奖号的
        /// 升降序组合的情况
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static string GetSjxzh(List<int> nums)
        {
            string result = string.Empty;

            if (nums[0] == nums[1] && nums[1] == nums[2])  //豹子
            {
                result = "平";
                return result;
            }


            if (nums[0] > nums[1] && nums[1] > nums[2])
            {
                result = "降";
                return result;
            }
            if (nums[0] < nums[1] && nums[1] < nums[2])
            {
                result = "升";
                return result;
            }
            if (nums[0] > nums[1] && nums[1] < nums[2])
            {
                result = "凹";
                return result;
            }
            if (nums[0] < nums[1] && nums[1] > nums[2])
            {
                result = "凸";
                return result;
            }
            if (nums[0] == nums[1] || nums[1] == nums[2] || nums[0] == nums[2])  //组三
            {
                result = "偏";
                return result;
            }
            return result;
        }

        /// <summary>
        /// 计算出某个跨度值的数据统计
        /// list[0] = 总数
        /// list[1] = 组三数
        /// list[2] = 组六数
        /// list[3] = 豹子数
        /// </summary>
        /// <param name="kd"></param>
        /// <returns></returns>
        public static List<int> GetKdCount(int kd, List<int> data)
        {
            List<int> list = new List<int>();
            List<int> temp = new List<int>();
            list.Add(0);
            list.Add(0);
            list.Add(0);
            list.Add(0);

            for (int i = 0; i < data.Count; i++)
            {
                if (GetKd(data[i]) == kd)
                    temp.Add(data[i]);
            }

            list[0] = temp.Count;
            for (int i = 0; i < temp.Count; i++)
            {
                if (GetZxxt(temp[i]) == 3)
                    list[1]++;
                if (GetZxxt(temp[i]) == 6)
                    list[2]++;
                if (GetZxxt(temp[i]) == 0)
                    list[3]++;
            }

            return list;
        }

        /// <summary>
        /// 计算出某个和值号的数据统计
        /// list[0] = 总数
        /// list[1] = 组三数
        /// list[2] = 组六数
        /// list[3] = 豹子数
        /// </summary>
        /// <param name="hz"></param>
        /// <returns></returns>
        public static List<int> GetHzCount(int hz, List<int> data)
        {
            List<int> list = new List<int>();
            List<int> temp = new List<int>();
            list.Add(0);
            list.Add(0);
            list.Add(0);
            list.Add(0);


            for (int i = 0; i < data.Count; i++)
            {
                if (GetHz(data[i]) == hz)
                    temp.Add(data[i]);
            }

            list[0] = temp.Count;
            for (int i = 0; i < temp.Count; i++)
            {
                if (GetZxxt(temp[i]) == 3)
                    list[1]++;
                if (GetZxxt(temp[i]) == 6)
                    list[2]++;
                if (GetZxxt(temp[i]) == 0)
                    list[3]++;
            }

            return list;
        }


        /// <summary>
        /// 返回某个3位数号码的组选形态
        /// </summary>
        /// <param name="num">158</param>
        /// <returns></returns>
        public static int GetZxxt(int num)
        {

            List<int> temp = GetNumList(num);
            return GetZxxt(temp);
        }


        /// <summary>
        /// 组三/组6形态
        /// </summary>
        /// <param name="nums"></param>
        /// <returns></returns>
        public static int GetZxxt(List<int> l)
        {
            int xt = 0;
            List<int> temp = new List<int>(l);
            if (temp[0] == temp[1] && temp[1] == temp[2] && temp[0] == temp[2])
            {
                xt = 0;
                return xt;
            }
            if (temp[0] == temp[1] || temp[1] == temp[2] || temp[0] == temp[2])
            {
                xt = 3;
                return xt;
            }

            if (temp[0] != temp[1] && temp[1] != temp[2] && temp[0] != temp[2])
            {
                xt = 6;
                return xt;
            }
            return xt;
        }


        public static int GetKd(List<int> kjh)
        {
            List<int> _kjh = new List<int>(kjh);
            _kjh.Sort();
            return Math.Abs(_kjh[0] - _kjh[_kjh.Count - 1]);
        }

        /// <summary>
        /// 根据开奖号获取最大跨度值
        /// </summary>
        /// <param name="kjh">List形式的开奖号</param>
        /// <returns></returns>
        public static int GetKd(int num)
        {
            List<int> kjh = GetNumList(num);
            kjh.Sort();
            return Math.Abs(kjh[0] - kjh[kjh.Count - 1]);
        }


        /// <summary>
        /// 排序5跨度计算
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static List<int> GetP5KdList(List<int> _kjh)
        {
            List<int> kjh = new List<int>(_kjh);
            kjh.Sort();
            List<int> kds = new List<int>();

            for (int i = 0; i < kjh.Count; i++)
            {
                if (i > 0)
                    kds.Add(Math.Abs(kjh[i] - kjh[i - 1]));
            }

            return kds;
        }

        /// <summary>
        /// 取三个跨度 组选
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static List<int> GetKdList(List<int> _kjh)
        {
            List<int> kds = new List<int>();
            List<int> kjh = new List<int>(_kjh);
            kjh.Sort();

            kds.Add(Math.Abs(kjh[0] - kjh[kjh.Count - 1]));  //最大跨度
            kds.Add(Math.Abs(kjh[0] - kjh[1]));  //1跨
            kds.Add(Math.Abs(kjh[1] - kjh[kjh.Count - 1]));    //2跨
            return kds;
        }

        /// <summary>
        /// 取三个跨度 组选
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static List<int> GetKdList(int num)
        {
            List<int> kjh = GetNumList(num);
            List<int> kds = new List<int>();
            kjh.Sort();

            kds.Add(Math.Abs(kjh[0] - kjh[kjh.Count - 1]));  //最大跨度
            kds.Add(Math.Abs(kjh[0] - kjh[1]));  //1跨
            kds.Add(Math.Abs(kjh[1] - kjh[kjh.Count - 1]));    //2跨
            return kds;
        }

        /// <summary>
        /// 取百、十、个跨度 直选 [0,1,2]
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static List<int> GetBSGKdList(int num)
        {
            List<int> kjh = GetNumList(num);
            List<int> kds = new List<int>();

            kds.Add(Math.Abs(kjh[0] - kjh[1]));  //百十
            kds.Add(Math.Abs(kjh[1] - kjh[2]));  //十个
            kds.Add(Math.Abs(kjh[0] - kjh[2]));  //百个
            return kds;
        }



        /// <summary>
        /// 根据开奖号获取和值
        /// </summary>
        /// <param name="kjh">int形式的开奖号</param>
        /// <returns></returns>
        public static int GetHz(int kjh)
        {
            List<int> k = GetNumList(kjh);
            k.Sort();
            return k[0] + k[1] + k[2];
        }

        /// <summary>
        /// 和值
        /// </summary>
        /// <param name="k"></param>
        /// <returns></returns>
        public static int GetHz(List<int> k)
        {
            return k[0] + k[1] + k[2];
        }

        /// <summary>
        /// 通用方法.返回012路,指定路数的个数
        /// </summary>
        /// <param name="list"></param>
        /// <param name="ls"></param>
        /// <returns></returns>
        public static int Get012Gs(List<int> list, int ls)
        {
            int n = 0;
            for (int i = 0; i < list.Count; i++)
            {
                if (Get012(list[i]) == ls)
                    n++;
            }
            return n;
        }

        #region P5一些方法
        /// <summary>
        /// p5号码数组
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static List<int> GetP5NumList(string num)
        {
            List<int> list = new List<int>();
            if (num.Trim().Length != 5)
                return list;

            for (int i = 0; i < num.Length; i++)
            {
                list.Add(TypeConverter.StrToInt(num.Substring(i, 1), 0));
            }
            return list;
        }

        /// <summary>
        /// p5和值
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static int GetP5Hz(string num)
        {
            List<int> list = GetP5NumList(num);
            int hz = 0;
            if (list != null && list.Count > 0)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    hz = hz + list[i];
                }
            }
            return hz;
        }

        /// <summary>
        /// 排列5的连号组数
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static int GetP5LhCount(string num)
        {
            List<int> list = GetP5NumList(num);
            int c = 0;
            if (list != null && list.Count > 0)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    if (i > 0 && (list[i] - list[i - 1]) == 1)
                        c++;
                }
            }
            return c;
        }

        #endregion

        #region P7的一些方法
        /// <summary>
        /// p7号码数组
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static List<int> GetP7NumList(string num)
        {
            List<int> list = new List<int>();
            if (num.Trim().Length != 7)
                return list;

            for (int i = 0; i < num.Length; i++)
            {
                list.Add(TypeConverter.StrToInt(num.Substring(i, 1), 0));
            }
            return list;
        }

        /// <summary>
        /// p7和值
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static int GetP7Hz(string num)
        {
            List<int> list = GetP7NumList(num);
            int hz = 0;
            if (list != null && list.Count > 0)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    hz = hz + list[i];
                }
            }
            return hz;
        }

        /// <summary>
        /// 排列7的连号组数
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static int GetP7LhCount(string num)
        {
            List<int> list = GetP7NumList(num);
            int c = 0;
            if (list != null && list.Count > 0)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    if (i > 0 && (list[i] - list[i - 1]) == 1)
                        c++;
                }
            }
            return c;
        }

        /// <summary>
        /// 排列7相同号码的个数
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static int GetP7ThCount(string num)
        {
            List<int> list = GetP7NumList(num);
            List<int> th = new List<int>();
            List<int> temp = new List<int>();
            foreach (int i in list)
            {
                if (!th.Contains(i))
                {
                    th.Add(i);
                }
                else
                {
                    temp.Add(i);
                }
            }

            list.RemoveAll(o =>
            {
                if (temp.Contains(o))
                    return true;
                else
                    return false;
            });

            return 7 - list.Count();
        }

        #endregion

        #region 东方61的一些方法
        /// <summary>
        /// df61
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static List<int> GetDf61NumList(string num)
        {
            List<int> list = new List<int>();
            if (num.Trim().Length != 6)
                return list;

            for (int i = 0; i < num.Length; i++)
            {
                list.Add(TypeConverter.StrToInt(num.Substring(i, 1), 0));
            }
            return list;
        }

        /// <summary>
        /// df61和值
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static int GetDf61Hz(string num)
        {
            List<int> list = GetDf61NumList(num);
            int hz = 0;
            if (list != null && list.Count > 0)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    hz = hz + list[i];
                }
            }
            return hz;
        }

        /// <summary>
        /// df61的连号组数
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static int GetDf61LhCount(string num)
        {
            List<int> list = GetDf61NumList(num);
            int c = 0;
            if (list != null && list.Count > 0)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    if (i > 0 && (list[i] - list[i - 1]) == 1)
                        c++;
                }
            }
            return c;
        }

        /// <summary>
        /// df61相同号码的个数
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static int GetDf61ThCount(string num)
        {
            List<int> list = GetDf61NumList(num);
            List<int> th = new List<int>();
            List<int> temp = new List<int>();
            foreach (int i in list)
            {
                if (!th.Contains(i))
                {
                    th.Add(i);
                }
                else
                {
                    temp.Add(i);
                }
            }

            list.RemoveAll(o =>
            {
                if (temp.Contains(o))
                    return true;
                else
                    return false;
            });

            return 6 - list.Count();
        }

        #endregion

        #region 浙江6+1
        /// <summary>
        /// zj61
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static List<int> GetZj61NumList(string num)
        {
            List<int> list = new List<int>();
            if (num.Trim().Length != 7)
                return list;

            for (int i = 0; i < num.Length; i++)
            {
                list.Add(TypeConverter.StrToInt(num.Substring(i, 1), 0));
            }
            return list;
        }

        /// <summary>
        /// zj61和值
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static int GetZj61Hz(string num)
        {
            List<int> list = GetZj61NumList(num);
            int hz = 0;
            if (list != null && list.Count > 0)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    hz = hz + list[i];
                }
            }
            return hz;
        }

        /// <summary>
        /// zj61的连号组数
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static int GetZj61LhCount(string num)
        {
            List<int> list = GetZj61NumList(num);
            int c = 0;
            if (list != null && list.Count > 0)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    if (i > 0 && (list[i] - list[i - 1]) == 1)
                        c++;
                }
            }
            return c;
        }

        /// <summary>
        /// zj61最大相同号码的个数
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static int GetZj61ThCount(string num)
        {
            List<int> list = GetZj61NumList(num);
            List<int> th = new List<int>();
            int[] temp = new int[10];
            for (int i = 0; i < temp.Length; i++)
                temp[i] = 0;

            foreach (int i in list)
            {
                temp[i]++;
            }

            List<int> max = new List<int>();
            for (int i = 0; i < temp.Length; i++)
            {
                max.Add(temp[i]);
            }

            return max.Max();

        }
        #endregion

        /// <summary>
        /// 根据和值返回和尾
        /// </summary>
        /// <param name="hz"></param>
        /// <returns></returns>
        public static int GetHw(int hz)
        {
            int hw = 0;
            string s = hz.ToString();
            if (s.Length == 4)
                return TypeConverter.StrToInt(s.Substring(3, 1));
            if (s.Length == 3)
                return TypeConverter.StrToInt(s.Substring(2, 1));
            if (s.Length == 2)
                return TypeConverter.StrToInt(s.Substring(1, 1));
            if (s.Length == 1)
                return hz;

            return hw;
        }

        /// <summary>
        /// 开奖号的尾数和值
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetWshz(List<int> kjh)
        {
            int wshz = 0;
            if (kjh != null && kjh.Count > 0)
            {
                for (int i = 0; i < kjh.Count; i++)
                {
                    wshz = wshz + GetHw(kjh[i]);
                }
            }

            return wshz;
        }




        /// <summary>
        /// 号码中的最大奇数
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetMaxJs(List<int> kjh)
        {
            List<int> temp = new List<int>();
            foreach (int i in kjh)
            {
                if (i % 2 != 0)
                    temp.Add(i);
            }

            if (temp.Count > 0)
                return temp.Max();
            else
                return -1;
        }

        /// <summary>
        /// 号码中的最小奇数
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetMinJs(List<int> kjh)
        {
            List<int> temp = new List<int>();
            foreach (int i in kjh)
            {
                if (i % 2 != 0)
                    temp.Add(i);
            }
            if (temp.Count > 0)
                return temp.Min();
            else
                return -1;
        }

        /// <summary>
        /// 号码中的最大偶数
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetMaxOs(List<int> kjh)
        {
            List<int> temp = new List<int>();
            foreach (int i in kjh)
            {
                if (i % 2 == 0)
                    temp.Add(i);
            }
            if (temp.Count > 0)
                return temp.Max();
            else
                return -1;
        }

        /// <summary>
        /// 号码中的最小偶数
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetMinOs(List<int> kjh)
        {
            List<int> temp = new List<int>();
            foreach (int i in kjh)
            {
                if (i % 2 == 0)
                    temp.Add(i);
            }
            if (temp.Count > 0)
                return temp.Min();
            else
                return -1;
        }

        /// <summary>
        /// 号码中的最大的质数
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetMaxZs(List<int> kjh)
        {
            List<int> temp = new List<int>();
            List<int> data = new List<int> { 0, 4, 6, 8, 9 };
            foreach (int i in kjh)
            {
                if (!data.Contains(i))
                    temp.Add(i);
            }

            if (temp.Count > 0)
                return temp.Max();
            else
                return -1;
        }

        /// <summary>
        /// 号码中的最大的质数
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetMinZs(List<int> kjh)
        {
            List<int> temp = new List<int>();
            List<int> data = new List<int> { 0, 4, 6, 8, 9 };
            foreach (int i in kjh)
            {
                if (!data.Contains(i))
                    temp.Add(i);
            }

            if (temp.Count > 0)
                return temp.Min();
            else
                return -1;
        }

        /// <summary>
        /// 号码中的最大的合数
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetMaxHs(List<int> kjh)
        {
            List<int> temp = new List<int>();
            List<int> data = new List<int> { 0, 4, 6, 8, 9 };
            foreach (int i in kjh)
            {
                if (data.Contains(i))
                    temp.Add(i);
            }

            if (temp.Count > 0)
                return temp.Max();
            else
                return -1;
        }

        /// <summary>
        /// 号码中的最小的合数
        /// </summary>
        /// <param name="kjh"></param>
        /// <returns></returns>
        public static int GetMinHs(List<int> kjh)
        {
            List<int> temp = new List<int>();
            List<int> data = new List<int> { 0, 4, 6, 8, 9 };
            foreach (int i in kjh)
            {
                if (data.Contains(i))
                    temp.Add(i);
            }

            if (temp.Count > 0)
                return temp.Min();
            else
                return -1;
        }

        /// <summary>
        /// 将string kjh转换成int kjh
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static List<int> ConvertList(List<string> kjh)
        {
            List<int> list = new List<int>();

            if (kjh == null || kjh.Count == 0)
                return list;

            foreach (string s in kjh)
            {
                list.Add(TypeConverter.ObjectToInt(s, -1));
            }
            return list;
        }

        #region 广东好彩1相关

        /// <summary>
        /// 返回好彩1季节说明
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static string GetJiJie(int n)
        {
            string result = string.Empty;
            if (n > 0 && n < 10)
                result = "春";
            if (n > 9 && n < 19)
                result = "夏";
            if (n > 18 && n < 28)
                result = "秋";
            if (n > 27)
                result = "冬";
            return result;
        }

        /// <summary>
        /// 方位
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static string GetFangWei(int n)
        {
            string result = string.Empty;
            List<int> fd = new List<int> { 1, 3, 5, 7, 9, 11, 13, 15, 17 };
            List<int> fn = new List<int> { 2, 4, 6, 8, 10, 12, 14, 16, 18 };
            List<int> fx = new List<int> { 19, 21, 23, 25, 27, 29, 31, 33, 35 };
            List<int> fb = new List<int> { 20, 22, 24, 26, 28, 30, 32, 34, 36 };

            if (fd.Contains(n))
                result = "东";
            if (fn.Contains(n))
                result = "南";
            if (fx.Contains(n))
                result = "西";
            if (fb.Contains(n))
                result = "北";

            return result;
        }

        /// <summary>
        /// 生肖
        /// </summary>
        /// <param name="n"></param>
        public static string GetShengXiao(int n)
        {
            string result = string.Empty;
            List<int> s1 = new List<int> { 1, 13, 25 };
            List<int> s2 = new List<int> { 2, 14, 26 };
            List<int> s3 = new List<int> { 3, 15, 27 };
            List<int> s4 = new List<int> { 4, 16, 28 };
            List<int> s5 = new List<int> { 5, 17, 29 };
            List<int> s6 = new List<int> { 6, 18, 30 };
            List<int> s7 = new List<int> { 7, 19, 31 };
            List<int> s8 = new List<int> { 8, 20, 32 };
            List<int> s9 = new List<int> { 9, 21, 33 };
            List<int> s10 = new List<int> { 10, 22, 34 };
            List<int> s11 = new List<int> { 11, 23, 35 };
            List<int> s12 = new List<int> { 12, 24, 36 };

            if (s1.Contains(n))
                return "鼠";

            if (s2.Contains(n))
                return "牛";

            if (s3.Contains(n))
                return "虎";

            if (s4.Contains(n))
                return "兔";

            if (s5.Contains(n))
                return "龙";

            if (s6.Contains(n))
                return "蛇";

            if (s7.Contains(n))
                return "马";

            if (s8.Contains(n))
                return "羊";

            if (s9.Contains(n))
                return "猴";

            if (s10.Contains(n))
                return "鸡";

            if (s11.Contains(n))
                return "狗";

            if (s12.Contains(n))
                return "猪";

            return result;
        }


        #endregion


        #region 香港彩相关

        static int[] Bs_red = { 1, 2, 7, 8, 12, 13, 18, 19, 23, 24, 29, 30, 34, 35, 40, 45, 46 };
        static int[] Bs_blue = { 3, 4, 9, 10, 14, 15, 20, 25, 26, 31, 36, 37, 41, 42, 47, 48 };
        static int[] Bs_green = { 5, 6, 11, 16, 17, 21, 22, 27, 28, 32, 33, 38, 39, 43, 44, 49 };
        /// <summary>
        /// 获取当前号码的波色
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int GetNumBoSe(int n)
        {
            if (Bs_red.Contains(n))
            {
                return 0;// "红";
            }
            else if (Bs_blue.Contains(n))
            {
                return 1;// "蓝";
            }
            else
            {
                return 2;// "绿";
            }
        }

        /// <summary>
        /// 获取当前号码的半波色
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int GetNumBBoSe(int n)
        {
            if (Bs_red.Contains(n) && n % 2 == 1)
            {
                return 0;// "红单";
            }
            else if (Bs_red.Contains(n) && n % 2 == 0)
            {
                return 3;// "红双";
            }

            else if (Bs_blue.Contains(n) && n % 2 == 1)
            {
                return 1;// "蓝单";
            }
            else if (Bs_blue.Contains(n) && n % 2 == 0)
            {
                return 4;// "蓝双";
            }
            else if (Bs_green.Contains(n) && n % 2 == 1)
            {
                return 2;// "绿单";
            }
            else
            {
                return 5;// "绿双";
            }

        }

        /// <summary>
        /// 特码单双
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int GetNumTmds(int n)
        {
            if (n % 2 == 1)
            {
                return 0;// "单";
            }
            else
            {
                return 1;// "双";
            }
        }

        /// <summary>
        /// 特头单双
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int GetNumTtds(int n)
        {
            if (n / 10 == 0 || n / 10 % 2 == 0)
            {
                return 1;// "双";
            }
            else
            {
                return 0;// "单";
            }
        }


        /// <summary>
        /// 特头单双(特码头数走势图)
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int GetNumtmttds(int n)
        {
            if (n / 10 == 0 || n / 10 % 2 == 0)
            {
                return 0;// "双";
            }
            else
            {
                return 1;// "单";
            }
        }

        /// <summary>
        /// 特尾大小
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int GetNumtmtwdx(int n)
        {
            if (n % 10 < 5)
            {
                return 0;// "小";
            }
            else
            {
                return 1;// "大";
            }
        }

        /// <summary>
        /// 合数单双
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int GetNumHsds(int n)
        {
            if (n / 10 == 0 || n / 10 % 2 == 0)
            {
                return 1;// "双";
            }
            else
            {
                return 0;// "单";
            }
        }
        #endregion

    }
}