/// <summary> /// 過濾數字 /// </summary> public List <BaseOptions> Filter(List <BaseOptions> tmp) { string condition = ""; //大底 #region 大底 / 複式 //複式 if ((bool)cbCheck3.IsChecked) { condition = teCheckHundred3.Text + "/" + teCheckTen3.Text + "/" + teCheckUnit3.Text; tmp = Calculation.CompoundNumber(tmp, condition, '/', 3, true); } //大底 if ((bool)cbCheck4.IsChecked && !(bool)cbIsGroup.IsChecked) { tmp = Calculation.AssignNumber(tmp, teBottom.Text, true); } #endregion //公式 //其他 #region group1-殺直選.垃圾複式.殺2碼.定位殺2碼.必出2碼.交集.公式.其他 //殺直選 tmp = Calculation.AssignNumber(tmp, teEditor1.Text, false); //垃圾複式 tmp = Calculation.GarbageNumber(tmp, teEditor2.Text, 2, '*', 3); //殺兩碼 condition = Calculation.ConbinationString(teEditor3.Text, 2); tmp = Calculation.ExistsNumber(tmp, condition, 2, true, false); //定位殺兩碼 tmp = Calculation.PosNumber(tmp, teEditor4.Text, 2, false); //必出兩碼 tmp = Calculation.ExistsNumber(tmp, teEditor5.Text, 2, true, true); //交集 if (!string.IsNullOrEmpty(teEditor6.Text)) { var inter = Regex.Replace(Regex.Replace(teEditor6.Text, "\n", " "), "[^0-9|\\s]", "").Split(' ').Except(new string[1] { "" }).Where(x => x.Length == 3); if (inter.Count() > 0) { tmp = tmp.Where(x => inter.Contains(x.Code)).ToList(); } } //公式 //其他 #endregion #region group2-和 跨 膽 //殺和尾 tmp = Calculation.SumLastNumber(tmp, cblType1, false); //殺跨度 tmp = Calculation.CrossNumber(tmp, cblType2, false); //選膽 condition = Calculation.BeforeCheck(tmp, cblType3); condition = condition.Replace(",", " "); var conArray = condition.Split(' ').Except(new string[1] { "" }); int unit = (int)rblSelect.SelectedValue; if (unit >= 2 && conArray.Count() >= unit) { Calculation.test tmps = Calculation.CombinationNNumber("", condition.Split(' ').ToArray(), unit, new Calculation.test()); condition = string.Join(" ", tmps.result2.Split(' ').Where(x => x.Distinct().Count() == unit)); } tmp = Calculation.ExistsNumber(tmp, condition, (int)rblSelect.SelectedValue, true, true); #endregion #region group3-和值 if ((bool)cbRemoveSum.IsChecked) { //殺指定和值 tmp = Calculation.SumNumber(tmp, teSum.Text, false); //和值範圍 int rangeStart = 0; int rangeEnd = 0; int.TryParse(teRange1.Text, out rangeStart); int.TryParse(teRange2.Text, out rangeEnd); var range = Calculation.CreateContinueNumber(rangeStart, rangeEnd); tmp = Calculation.SumNumber(tmp, string.Join(" ", range.Select(x => x.Code)), true); } #endregion #region group4-排除複式/定位殺 //排除複式 if ((bool)cbCheck1.IsChecked) { condition = teCheckHundred.Text + "/" + teCheckTen.Text + "/" + teCheckUnit.Text; tmp = Calculation.CompoundNumber(tmp, condition, '/', 3); } //定位殺 if ((bool)cbCheck2.IsChecked) { tmp = Calculation.PosNumber(tmp, teCheckHundred2.Text, "0", false); tmp = Calculation.PosNumber(tmp, teCheckTen2.Text, "1", false); tmp = Calculation.PosNumber(tmp, teCheckUnit2.Text, "2", false); } //AC值 #endregion #region group5-大小 tmp = Calculation.CheckValueNumber(tmp, cblData1, 1, true); #endregion #region group6-奇偶 tmp = Calculation.OddEvenNumber(tmp, cblData2, true); #endregion #region group7-質合 tmp = Calculation.PrimeNumber(tmp, cblData3, true); #endregion #region group8-012路特別排除 tmp = Calculation.DivThreeRemainder(tmp, cbl012, false); #endregion #region group9-匹配過濾 if ((bool)cbMatch.IsChecked) { tmp = Calculation.ThreeStartMatchFilter(tmp, dgData1.ItemsSource.Cast <WpfApp.Custom.Match>().ToList()); } #endregion #region group10-位置大小匹配 if ((bool)cbPosMatch.IsChecked) { tmp = Calculation.ThreeStartMatch(tmp, dgData2.ItemsSource.Cast <WpfApp.Custom.Match>().ToList()); } #endregion #region group11-特別排除 tmp = Calculation.ThreeSpecialData(tmp, cblSpecialExcept.SelectedValue); #endregion return(tmp); }