using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; namespace Common { public static class ToolsHelper { /// /// 生成选择的数据组合 3d p3 /// /// /// /// /// /// public static List GetBase3DNumber(string bwString, string swString, string gwString, string dadihao) { List Numbers = new List(); string strs = string.Empty; if (!string.IsNullOrEmpty(bwString) && !string.IsNullOrEmpty(swString) && !string.IsNullOrEmpty(gwString)) { strs = bwString + swString + gwString; } if (strs.Length > 0) //根据选号生成号码 { string[] bwArray = bwString.Split(','); string[] swArray = swString.Split(','); string[] gwArray = gwString.Split(','); foreach (string t in bwArray) { foreach (string t1 in swArray) { foreach (string t2 in gwArray) { Numbers.Add(t + "," + t1 + "," + t2); } } } } else if (!string.IsNullOrEmpty(dadihao)) //根据 { dadihao = dadihao.Replace("\r\n", ";"); dadihao = dadihao.Replace(" ", ";"); dadihao = dadihao.Replace(" ", ";"); string[] dadiNumbers = dadihao.Split(';'); foreach (string t in dadiNumbers) { int outresult; if (t.Trim().Length == 3 && !Numbers.Contains(t) && Int32.TryParse(t, out outresult)) { //需要将"123"转换为"1,2,3"格式 string newNumber = string.Empty; for (int ilength = 0; ilength < t.Length; ilength++) { newNumber += (ilength == 0 ? "" : ",") + t.ToString().Substring(ilength, 1); } Numbers.Add(newNumber); //sourcedata = sourcedata + dadiNumbers[i] + ","; } } //获取大底是直选还是组选 string dzhixuan = HttpContext.Current.Request.QueryString["FilterName_zhizuxuan"]; if (dzhixuan == "1") //用户选择了组选 { List NewNumber = new List(); for (int i = 0; i < Numbers.Count; i++) { List No = new List(Numbers[i].Split(',')); No.Sort(); string Num = string.Join(",", No.ToArray()); if (!NewNumber.Contains(Num)) { NewNumber.Add(Num); } else { Numbers.RemoveAt(i); i--; //RemoveNum.Add(Num); } } //RemoveNumber(ref Numbers, RemoveNum); //sourcedata = "大底:1#" + sourcedata; } else { //sourcedata = "大底:0#" + sourcedata; } } return Numbers; } /// /// 生成选择的数据组合 七星彩 /// /// /// /// /// /// public static List GetBaseQxcNumber(string w1, string w2, string w3, string w4, string w5, string w6, string w7) { List Numbers = new List(); string strs = string.Empty; if (!string.IsNullOrEmpty(w1) && !string.IsNullOrEmpty(w2) && !string.IsNullOrEmpty(w3) && !string.IsNullOrEmpty(w4) && !string.IsNullOrEmpty(w5) && !string.IsNullOrEmpty(w6) && !string.IsNullOrEmpty(w7)) { strs = w1 + w2 + w3 + w4 + w5 + w6 + w7; } if (strs.Length > 0) //根据选号生成号码 { string[] w1Array = w1.Split(','); string[] w2Array = w2.Split(','); string[] w3Array = w3.Split(','); string[] w4Array = w4.Split(','); string[] w5Array = w5.Split(','); string[] w6Array = w6.Split(','); string[] w7Array = w7.Split(','); foreach (string t in w1Array) { foreach (string t1 in w2Array) { foreach (string t2 in w3Array) { foreach (string t3 in w4Array) { foreach (string t4 in w5Array) { foreach (string t5 in w6Array) { foreach (string t6 in w7Array) { Numbers.Add(t + "," + t1 + "," + t2 + "," + t3 + "," + t4 + "," + t5 + "," + t6); } } } } } } } } return Numbers; } /// /// 生成选择的数据组合 大乐透 /// /// /// /// /// /// public static void GetBaseDltNumber(string qhm, string hhm, string qdm, string hdm, ref List qnumber, ref List hnumber) { string[] qhms = qhm.Split(','); string[] hhms = hhm.Split(','); string[] qdms = qdm.Split(','); string[] hdms = hdm.Split(','); List qlist = new List(qhms); List hlist = new List(hhms); List showTmp = new List(); int qdmlen = 0; if (qdms != null && !string.IsNullOrEmpty(qdms[0])) qdmlen = qdms.Length; else qdmlen = 0; int hdmlen = 0; if (hdms != null && !string.IsNullOrEmpty(hdms[0])) hdmlen = hdms.Length; else hdmlen = 0; List qtemplist = GetCombination(qlist, 5 - qdmlen); List htemplist = GetCombination(hlist, 2 - hdmlen); //生成前区所有号码组合 for (int i = 0; i < qtemplist.Count; i++) { string temp = string.Empty; showTmp = Add_jiben_danma(qtemplist[i].ToString(), qdm); showTmp.Sort(); for (int j = 0; j < showTmp.Count; j++) { if (j == (showTmp.Count - 1)) { temp = temp + showTmp[j].ToString(); } else { temp = temp + showTmp[j].ToString() + ","; } } if (!string.IsNullOrEmpty(temp)) qnumber.Add(temp); } for (int i = 0; i < htemplist.Count; i++) { string temp = string.Empty; showTmp = Add_jiben_danma(htemplist[i].ToString(), hdm); showTmp.Sort(); for (int j = 0; j < showTmp.Count; j++) { if (j == (showTmp.Count - 1)) { temp = temp + showTmp[j].ToString(); } else { temp = temp + showTmp[j].ToString() + ","; } } if (!string.IsNullOrEmpty(temp)) hnumber.Add(temp); } } /// /// 生成选择的数据组合 七乐彩 /// /// /// /// /// /// public static void GetBaseQlcNumber(string qhm, string hhm, string qdm, string hdm, ref List qnumber, ref List hnumber) { string[] qhms = qhm.Split(','); string[] hhms = hhm.Split(','); string[] qdms = qdm.Split(','); string[] hdms = hdm.Split(','); List qlist = new List(qhms); List hlist = new List(hhms); List showTmp = new List(); int qdmlen = 0; if (qdms != null && !string.IsNullOrEmpty(qdms[0])) qdmlen = qdms.Length; else qdmlen = 0; int hdmlen = 0; if (hdms != null && !string.IsNullOrEmpty(hdms[0])) hdmlen = hdms.Length; else hdmlen = 0; List qtemplist = GetCombination(qlist, 7 - qdmlen); List htemplist = GetCombination(hlist, 1 - hdmlen); //生成前区所有号码组合 for (int i = 0; i < qtemplist.Count; i++) { string temp = string.Empty; showTmp = Add_jiben_danma(qtemplist[i].ToString(), qdm); showTmp.Sort(); for (int j = 0; j < showTmp.Count; j++) { if (j == (showTmp.Count - 1)) { temp = temp + showTmp[j].ToString(); } else { temp = temp + showTmp[j].ToString() + ","; } } if (!string.IsNullOrEmpty(temp)) qnumber.Add(temp); } for (int i = 0; i < htemplist.Count; i++) { string temp = string.Empty; showTmp = Add_jiben_danma(htemplist[i].ToString(), hdm); showTmp.Sort(); for (int j = 0; j < showTmp.Count; j++) { if (j == (showTmp.Count - 1)) { temp = temp + showTmp[j].ToString(); } else { temp = temp + showTmp[j].ToString() + ","; } } if (!string.IsNullOrEmpty(temp)) hnumber.Add(temp); } } /// /// 生成选择的数据组合 双色球 /// /// /// /// /// /// public static void GetBaseSsqNumber(string qhm, string hhm, string qdm, string hdm, ref List qnumber, ref List hnumber) { string[] qhms = qhm.Split(','); string[] hhms = hhm.Split(','); string[] qdms = qdm.Split(','); string[] hdms = hdm.Split(','); List qlist = new List(qhms); List hlist = new List(hhms); List showTmp = new List(); int qdmlen = 0; if (qdms != null && !string.IsNullOrEmpty(qdms[0])) qdmlen = qdms.Length; else qdmlen = 0; int hdmlen = 0; if (hdms != null && !string.IsNullOrEmpty(hdms[0])) hdmlen = hdms.Length; else hdmlen = 0; List qtemplist = GetCombination(qlist, 6 - qdmlen); List htemplist = GetCombination(hlist, 1 - hdmlen); //生成前区所有号码组合 for (int i = 0; i < qtemplist.Count; i++) { string temp = string.Empty; showTmp = Add_jiben_danma(qtemplist[i].ToString(), qdm); showTmp.Sort(); for (int j = 0; j < showTmp.Count; j++) { if (j == (showTmp.Count - 1)) { temp = temp + showTmp[j].ToString(); } else { temp = temp + showTmp[j].ToString() + ","; } } if (!string.IsNullOrEmpty(temp)) qnumber.Add(temp); } for (int i = 0; i < htemplist.Count; i++) { string temp = string.Empty; showTmp = Add_jiben_danma(htemplist[i].ToString(), hdm); showTmp.Sort(); for (int j = 0; j < showTmp.Count; j++) { if (j == (showTmp.Count - 1)) { temp = temp + showTmp[j].ToString(); } else { temp = temp + showTmp[j].ToString() + ","; } } if (!string.IsNullOrEmpty(temp)) hnumber.Add(temp); } } #region 基本号码+胆码 private static List Add_jiben_danma(string jiben, string dan) { string[] jibenTmp; //存放结果基本号 string[] danTmp; //存放胆码 List result = new List(); jibenTmp = jiben.Split(','); result.AddRange(jibenTmp); if (!string.IsNullOrEmpty(dan)) { danTmp = dan.Split(','); result.AddRange(danTmp); } return result; } #endregion #region 生成自然组合 private static List GetCombination(List sampleList, int m) { if (sampleList.Count == 0) return new List(); if (m == 1) { return sampleList; } List result = new List(); if (sampleList.Count == m) { StringBuilder tempSb = new StringBuilder(); foreach (string s in sampleList) { tempSb.Append(s + ","); } tempSb.Remove(tempSb.Length - 1, 1); result.Add(tempSb.ToString()); return result; } string tempFirstelement = sampleList[0].ToString(); sampleList.RemoveAt(0); List tempSamplist1 = new List(); tempSamplist1.AddRange(sampleList); List tempList1 = GetCombination(tempSamplist1, m - 1); foreach (string s in tempList1) { result.Add(tempFirstelement + "," + s); } List tempSamplist2 = new List(); tempSamplist2.AddRange(sampleList); List tempList2 = GetCombination(tempSamplist2, m); result.AddRange(tempList2); return result; } #endregion /// /// 获取3D/P3是直选还是组选 /// /// public static string GetZhiZuXuan() { string zzx = ""; string zhizuxuan = HttpContext.Current.Request.QueryString["zuhe"]; if (!string.IsNullOrEmpty(zhizuxuan)) { if (zhizuxuan.IndexOf("直选", StringComparison.Ordinal) > -1) { zzx = "直选"; } if (zhizuxuan.IndexOf("组选", StringComparison.Ordinal) > -1) { zzx = "组选"; } } return zzx; } /// /// 三位号 二码和 /// /// /// public static List Getemh(string code) { var list = code.Split(','); List emh = new List(); emh.Add((list[0].StrToInt() + list[1].StrToInt()).ToString()); emh.Add((list[0].StrToInt() + list[2].StrToInt()).ToString()); emh.Add((list[1].StrToInt() + list[2].StrToInt()).ToString()); return emh.Distinct().ToList(); } /// /// 三位号 二码差 /// /// /// public static List Getemc(string code) { var list = code.Split(','); List emh = new List(); emh.Add(Math.Abs(list[0].StrToInt() - list[1].StrToInt()).ToString()); emh.Add(Math.Abs(list[0].StrToInt() - list[2].StrToInt()).ToString()); emh.Add(Math.Abs(list[1].StrToInt() - list[2].StrToInt()).ToString()); return emh.Distinct().ToList(); } /// /// 三位号 二码组合 /// /// /// public static List Getem(string code) { var list = code.Split(','); List emh = new List(); emh.Add(list[0] + list[1]); emh.Add(list[0] + list[2]); emh.Add(list[1] + list[2]); return emh.Distinct().ToList(); } /// /// 三位号 获取大中小 形态 /// /// /// public static string GetDzx(string code) { var list = code.Split(','); string value = ""; foreach (var item in list) { if (Convert.ToInt32(item) < 3) value += "小"; else if (Convert.ToInt32(item) < 7) value += "中"; else if (Convert.ToInt32(item) < 10) value += "大"; } return value; } /// /// 三位号 获取大小 形态 /// /// /// public static string GetDxxtCh(string code, string red="0,9") { List value = new List(); int number = red.Split(',')[0].TryToInt32() / 2; code.Split(',').ToList().ForEach(p => { if (p.TryToInt32() > number) value.Add("大"); else value.Add("小"); }); return value.Join(""); } /// /// 三位号 是否顺子 /// /// /// public static bool IsSz(string code) { var list = code.Split(','); int val1 = list[0].StrToInt() - list[1].StrToInt(); int val2 = list[1].StrToInt() - list[2].StrToInt(); if ((val1 == 1 && val2 == 1) || (val1 == -1 && val2 == -1)) return true; return false; } /// /// 三位号 是否半顺子 /// /// /// public static bool IsBsz(string code) { var list = code.Split(','); int val1 = Math.Abs(list[0].StrToInt() - list[1].StrToInt()); int val2 = Math.Abs(list[1].StrToInt() - list[2].StrToInt()); if (val1 == 1 || val2 == 1) return true; return false; } /// /// 三位号 是否组三 /// /// /// public static bool IsZus(string code) { var list = code.Split(','); int val1 = Math.Abs(list[0].StrToInt() - list[1].StrToInt()); int val2 = Math.Abs(list[1].StrToInt() - list[2].StrToInt()); int val3 = Math.Abs(list[0].StrToInt() - list[2].StrToInt()); if ((val1 == 0 || val2 == 0 || val3 == 0) && list.Distinct().Count() != 1) return true; return false; } /// /// 三位号 是否组三六 /// /// /// public static bool IsZul(string code) { var list = code.Split(','); int val1 = Math.Abs(list[0].StrToInt() - list[1].StrToInt()); int val2 = Math.Abs(list[1].StrToInt() - list[2].StrToInt()); int val3 = Math.Abs(list[0].StrToInt() - list[2].StrToInt()); if (val1 != 0 && val2 != 0 && val3 != 0) return true; return false; } /// /// 三位号 是否豹子 /// /// /// public static bool IsBz(string code) { var list = code.Split(','); if (list.Distinct().Count() == 1) return true; return false; } /// /// 返回组选形态的所有号码组合 /// /// /// public static List GetZxNumList(string num) { List nums = num.Split(',').Select(a=>Convert.ToInt32(a)).ToList(); List zx = new List(); zx.Add(nums[0].ToString() + nums[1].ToString() + nums[2].ToString()); zx.Add(nums[0].ToString() + nums[2].ToString() + nums[1].ToString()); zx.Add(nums[1].ToString() + nums[0].ToString() + nums[2].ToString()); zx.Add(nums[1].ToString() + nums[2].ToString() + nums[0].ToString()); zx.Add(nums[2].ToString() + nums[0].ToString() + nums[1].ToString()); zx.Add(nums[2].ToString() + nums[1].ToString() + nums[0].ToString()); return zx; } /// /// 根据大小形态 /// 返回大小形态的组选数组 /// /// /// public static List GetDxList(string xt) { List list = new List(); List temp = new List(); if (string.IsNullOrEmpty(xt)) return null; for (int i = 0; i < xt.Length; i++) temp.Add(xt.Substring(i, 1)); list.Add(temp[0] + temp[1] + temp[2]); list.Add(temp[0] + temp[2] + temp[1]); list.Add(temp[1] + temp[0] + temp[2]); list.Add(temp[1] + temp[2] + temp[0]); list.Add(temp[2] + temp[1] + temp[0]); list.Add(temp[2] + temp[0] + temp[1]); return list; } /// /// 根据奇偶形态 /// 返回类似 偶偶奇的数组 /// /// /// public static List GetJoList(string xt) { List list = new List(); List temp = new List(); if (string.IsNullOrEmpty(xt)) return null; for (int i = 0; i < xt.Length; i++) temp.Add(xt.Substring(i, 1)); list.Add(temp[0] + temp[1] + temp[2]); list.Add(temp[0] + temp[2] + temp[1]); list.Add(temp[1] + temp[0] + temp[2]); list.Add(temp[1] + temp[2] + temp[0]); list.Add(temp[2] + temp[1] + temp[0]); list.Add(temp[2] + temp[0] + temp[1]); return list; } /// /// 根据质合形态 /// 返回类似 质质合的数组 /// /// /// public static List GetZhList(string xt) { List list = new List(); List temp = new List(); if (string.IsNullOrEmpty(xt)) return null; for (int i = 0; i < xt.Length; i++) temp.Add(xt.Substring(i, 1)); list.Add(temp[0] + temp[1] + temp[2]); list.Add(temp[0] + temp[2] + temp[1]); list.Add(temp[1] + temp[0] + temp[2]); list.Add(temp[1] + temp[2] + temp[0]); list.Add(temp[2] + temp[1] + temp[0]); list.Add(temp[2] + temp[0] + temp[1]); return list; } /// /// 根据012形态 /// 返回类似 012的数组 /// /// /// public static List Get012List(string xt) { List temp = new List(); List list = new List(); if (string.IsNullOrEmpty(xt)) return null; for (int i = 0; i < xt.Length; i++) temp.Add(xt.Substring(i, 1)); list.Add(temp[0] + temp[1] + temp[2]); list.Add(temp[0] + temp[2] + temp[1]); list.Add(temp[1] + temp[0] + temp[2]); list.Add(temp[1] + temp[2] + temp[0]); list.Add(temp[2] + temp[1] + temp[0]); list.Add(temp[2] + temp[0] + temp[1]); return list; } /// /// 构造出3d/p3的1000注所有号码 /// /// public static List GetAllNumber() { List list = new List(); for (int i = 0; i < 1000; i++) list.Add(String.Join(",", i.ToString().PadLeft(3, '0').ToArray())); return list; } public static List GetDx(string dx) { List model = new List(); var list = dx.Split(','); foreach (var item in list) { switch (item) { case "全大": model.Add("大大大"); break; case "两大一小": model.Add("大大小"); model.Add("大小大"); model.Add("小大大"); break; case "两小一大": model.Add("小小大"); model.Add("小大小"); model.Add("大小小"); break; case "全小": model.Add("小小小"); break; default: break; } } return model; } public static List GetJo(string jo) { List model = new List(); var list = jo.Split(','); foreach (var item in list) { switch (item) { case "全奇": model.Add("奇奇奇"); break; case "两奇一偶": model.Add("奇奇偶"); model.Add("奇偶奇"); model.Add("偶奇奇"); break; case "两偶一奇": model.Add("奇偶偶"); model.Add("偶奇偶"); model.Add("偶偶奇"); break; case "全偶": model.Add("偶偶偶"); break; default: break; } } return model; } public static List GetZh(string zh) { List model = new List(); var list = zh.Split(','); foreach (var item in list) { switch (item) { case "全质": model.Add("质质质"); break; case "两质一合": model.Add("合质质"); model.Add("质质合"); model.Add("质合质"); break; case "两合一质": model.Add("质合合"); model.Add("合质合"); model.Add("合合质"); break; case "全合": model.Add("合合合"); break; default: break; } } return model; } public static List Get012(string l012) { List model = new List(); var list = l012.Split(','); foreach (var item in list) { switch (item) { case "3个0": model.Add("000"); break; case "3个1": model.Add("111"); break; case "3个2": model.Add("222"); break; case "2个0": model.Add("002"); model.Add("001"); model.Add("100"); model.Add("200"); model.Add("010"); model.Add("020"); break; case "2个1": model.Add("110"); model.Add("112"); model.Add("101"); model.Add("121"); model.Add("011"); model.Add("211"); break; case "2个2": model.Add("022"); model.Add("122"); model.Add("220"); model.Add("221"); model.Add("202"); model.Add("212"); break; case "各1个": model.Add("123"); model.Add("132"); model.Add("213"); model.Add("231"); model.Add("321"); model.Add("312"); break; default: break; } } return model; } /// /// 获取连号集 /// /// public static List GetLh(string lh) { List list = new List(); foreach (var item in lh.Split(',')) { switch (item) { case "无连号": list.Add(0); break; case "1连号": list.Add(1); break; case "2连号": list.Add(2); break; case "3连号": list.Add(3); break; case "4连号": list.Add(4); break; case "5连号": list.Add(5); break; default: break; } } return list; } /// /// 获取号码得我连号个数 /// /// public static int GetLhNum(string code) { List list = new List(); foreach (var item in code.Split(',')) { switch (item) { case "无连号": list.Add(0); break; case "1连号": list.Add(1); break; case "2连号": list.Add(2); break; case "3连号": list.Add(3); break; case "4连号": list.Add(4); break; case "5连号": list.Add(5); break; case "6连号": list.Add(6); break; default: break; } } return 0; } /// /// 获取号码在号码集合中出现个数形态 /// /// /// /// public static string GetXtNum(string code, List qnumber, List hnumber) { if (code.IsEmpty()) return ""; int q = 0, h = 0; foreach (var item in code.Split('+')[0].Split(',')) { if (qnumber.Contains(item)) q++; } foreach (var item in code.Split('+')[1].Split(',')) { if (hnumber.Contains(item)) h++; } return $"{q}+{h}"; } public static int GetXtHm(string code, string code2) { var list1 = code.Split(','); var list2 = code2.Split(','); int n = 0; foreach (var item in list1) { if (list2.Contains(item)) n++; } return n; } } }