/// <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); }
/// <summary> /// 過濾數字 /// </summary> public List <BaseOptions> Filter(List <BaseOptions> tmp) { //殺直選 tmp = Calculation.AssignNumber(tmp, tePos.Text, false); //定位殺 tmp = Calculation.PosNumber(tmp, cblTenThousands, "0", false); tmp = Calculation.PosNumber(tmp, cblThousands, "1", false); tmp = Calculation.PosNumber(tmp, cblHundreds, "2", false); tmp = Calculation.PosNumber(tmp, cblTens, "3", false); tmp = Calculation.PosNumber(tmp, cblUnits, "4", false); //殺和尾 tmp = Calculation.SumLastNumber(tmp, cblSumLast, false); //殺和值 tmp = Calculation.SumNumber(tmp, teSum.Text, false); //殺跨度 tmp = Calculation.CrossNumber(tmp, cblCross, false); //殺通碼 tmp = Calculation.ExistsNumber(tmp, cblComm, 1, false, false); //殺大小 tmp = Calculation.CheckValueNumber(tmp, cblData1, 1, false); //殺奇偶 tmp = Calculation.OddEvenNumber(tmp, cblData2, false); //殺质合 tmp = Calculation.PrimeNumber(tmp, cblData3, false); //膽碼 if (cblNumber1.SelectedValue.IndexOf('1') > -1) { tmp = Calculation.ExistsNumber2(tmp, cblNumber1, cblNumber1_2, null, (bool)btnCountRepeat.IsChecked); } if (cblNumber2.SelectedValue.IndexOf('1') > -1) { tmp = Calculation.ExistsNumber2(tmp, cblNumber2, cblNumber2_2, null, (bool)btnCountRepeat.IsChecked); } if (cblNumber3.SelectedValue.IndexOf('1') > -1) { tmp = Calculation.ExistsNumber2(tmp, cblNumber3, cblNumber3_2, null, (bool)btnCountRepeat.IsChecked); } if (cblNumber4.SelectedValue.IndexOf('1') > -1) { tmp = Calculation.ExistsNumber2(tmp, cblNumber4, cblNumber4_2, null, (bool)btnCountRepeat.IsChecked); } if (cblNumber5.SelectedValue.IndexOf('1') > -1) { tmp = Calculation.ExistsNumber2(tmp, cblNumber5, cblNumber5_2, null, (bool)btnCountRepeat.IsChecked); } if (cblNumber6.SelectedValue.IndexOf('1') > -1) { tmp = Calculation.ExistsNumber2(tmp, cblNumber6, cblNumber6_2, null, (bool)btnCountRepeat.IsChecked); } //比例大小比 tmp = Calculation.BigSmallRatio(tmp, cblRatio.SelectedValue); //比例奇偶比 tmp = Calculation.OddEvenRatio(tmp, cblRatio2.SelectedValue); //比例質合比 tmp = Calculation.PrimeRatio(tmp, cblRatio3.SelectedValue); return(tmp); }
///// <summary> ///// 選取全部選項 ///// </summary> //public void SelectAll() //{ // IsSetting = true; // IsSetting = false; //} /// <summary> /// 過濾數字 /// </summary> public List <BaseOptions> Filter(List <BaseOptions> tmp) { string[] empty = new string[1] { "" }; //大底先篩再過濾 var n = teNumber.Text.Split(' ').Except(empty); if (n.Count() > 0) { tmp = tmp.Where(x => n.Contains(x.Code)).ToList(); } #region group1-殺直選.殺垃圾.殺兩碼.必出兩碼.殺三碼.必出三碼.定位杀号 //殺直選 tmp = Calculation.AssignNumber(tmp, teEditor1.Text, false); //殺垃圾複式 tmp = Calculation.GarbageNumber(tmp, teEditor2.Text, 2, '*', 4); //殺兩碼 tmp = Calculation.ExistsNumber(tmp, teEditor3_1.Text, 2, (!(bool)cbIgnore1_1.IsChecked), false); //必出兩碼 tmp = Calculation.ExistsNumber(tmp, teEditor3_2.Text, 2, (!(bool)cbIgnore1_2.IsChecked), true); //殺三碼 tmp = Calculation.ExistsNumber(tmp, teEditor4_1.Text, 3, (!(bool)cbIgnore2_1.IsChecked), false); //必出三碼 tmp = Calculation.ExistsNumber(tmp, teEditor4_2.Text, 3, (!(bool)cbIgnore2_2.IsChecked), true); //定位杀号 tmp = Calculation.PosNumber(tmp, teEditor5.Text, -1, false); #endregion #region group2-定位殺 tmp = Calculation.PosNumber(tmp, cblThousands, "0", false); tmp = Calculation.PosNumber(tmp, cblHundreds, "1", false); tmp = Calculation.PosNumber(tmp, cblTens, "2", false); tmp = Calculation.PosNumber(tmp, cblUnits, "3", false); #endregion #region group3-殺和尾.殺和值.殺跨度.殺通碼.殺AC值 //殺和尾 tmp = Calculation.SumLastNumber(tmp, cblType1, false); //殺和值 tmp = Calculation.SumNumber(tmp, teSum.Text, false); //殺跨度 tmp = Calculation.CrossNumber(tmp, cblType2, false); //殺通碼 tmp = Calculation.ExistsNumber(tmp, cblType3, 1, false, false); //殺AC值=>目前不需 #endregion #region group4-膽碼 if (cblNumber1.SelectedValue.IndexOf('1') > -1) { tmp = Calculation.ExistsNumber2(tmp, cblNumber1, cblNumber1_2, null, (bool)btnCountRepeat.IsChecked); } if (cblNumber2.SelectedValue.IndexOf('1') > -1) { tmp = Calculation.ExistsNumber2(tmp, cblNumber2, cblNumber2_2, null, (bool)btnCountRepeat.IsChecked); } if (cblNumber3.SelectedValue.IndexOf('1') > -1) { tmp = Calculation.ExistsNumber2(tmp, cblNumber3, cblNumber3_2, null, (bool)btnCountRepeat.IsChecked); } if (cblNumber4.SelectedValue.IndexOf('1') > -1) { tmp = Calculation.ExistsNumber2(tmp, cblNumber4, cblNumber4_2, null, (bool)btnCountRepeat.IsChecked); } #endregion #region group5-殺特殊型態 tmp = Calculation.FourSpecialData(tmp, cblSpecial.SelectedValue); #endregion #region group6-特别排除 tmp = Calculation.FourSpecial2Data(tmp, cblSpecialExcept.SelectedValue); #endregion #region group7-殺大小 tmp = Calculation.CheckValueNumber(tmp, cblData1, 1, false); #endregion #region group8-殺奇偶 tmp = Calculation.OddEvenNumber(tmp, cblData2, false); #endregion #region group9-殺质合 tmp = Calculation.PrimeNumber(tmp, cblData3, false); #endregion #region group10-殺012路 tmp = Calculation.DivThreeRemainder(tmp, cbl012, false); #endregion return(tmp); }