private void Fetch(uint quad, SimpleList <int> buffer, SudokuRegion region, SudokuState state, ICollection <IEvent> events) { var reduced = false; var mask = ~quad; foreach (var index in region) { if (buffer.Contains(index)) { continue; } var result = state.And <ReduceNakedTriples>(index, mask); if (result is ValueFound) { events.Add(result); } else if (result is ReducedOption) { reduced = true; } } if (reduced) { events.Add(ReducedOptions.Ctor <ReduceNakedTriples>()); } }
private void Fetch(uint value, SimpleList <int> intersection, SudokuRegion intersected, SudokuState state, ICollection <IEvent> events) { IEvent result = NoReduction.Instance; var mask = ~value; foreach (var index in intersected) { // items in the shared section should be skipped. if (intersection.Contains(index)) { continue; } var test = state.And <ReducePointingPairs>(index, mask); if (test is ValueFound) { events.Add(test); } else if (test is ReducedOption) { result = test; } } if (result is ReducedOption) { events.Add(ReducedOptions.Ctor <ReduceNakedPairs>()); } }
internal override IEnumerable <Variable> EnumerateFreeVariables(SimpleList <Variable> bound, HashSet <Variable> free) { if (!bound.Contains(var1)) { if (free.Add(var1)) { yield return(var1); } } if (!bound.Contains(var2)) { if (free.Add(var2)) { yield return(var2); } } }
internal override MSOFormula <T> SubstituteVariables1(Dictionary <string, Variable> subst, SimpleList <string> bound) { var v1 = (bound.Contains(var1.Name) ? var1 : (subst.ContainsKey(var1.Name) ? subst[var1.Name] : var1)); var v2 = (bound.Contains(var2.Name) ? var2 : (subst.ContainsKey(var2.Name) ? subst[var2.Name] : var2)); if (v1 == var1 && v2 == var2) { return(this); } else { if (v1.IsFirstOrder != var1.IsFirstOrder || v2.IsFirstOrder != var2.IsFirstOrder) { throw new ArgumentException("invalid substitution"); } return(new MSOMin <T>(v1, v2)); } }
static void Main() { SimpleList test = new SimpleList(); // Populate the List Console.WriteLine("Populate the List"); test.Add("one"); test.Add("two"); test.Add("three"); test.Add("four"); test.Add("five"); test.Add("six"); test.Add("seven"); test.Add("eight"); test.PrintContents(); Console.WriteLine(); // Remove elements from the list Console.WriteLine("Remove elements from the list"); test.Remove("six"); test.Remove("eight"); test.PrintContents(); Console.WriteLine(); // Add an element to the end of the list Console.WriteLine("Add an element to the end of the list"); test.Add("nine"); test.PrintContents(); Console.WriteLine(); // Insert an element into the middle of the list Console.WriteLine("Insert an element into the middle of the list"); test.Insert(4, "number"); test.PrintContents(); Console.WriteLine(); // Check for specific elements in the list Console.WriteLine("Check for specific elements in the list"); Console.WriteLine("List contains \"three\": {0}", test.Contains("three")); Console.WriteLine("List contains \"ten\": {0}", test.Contains("ten")); }
internal override MSOFormula <T> SubstituteVariables1(Dictionary <string, Variable> subst, SimpleList <string> bound) { var v = (bound.Contains(var.Name) ? var : (subst.ContainsKey(var.Name) ? subst[var.Name] : var)); if (v == var) { return(this); } else { return(new MSOLast <T>(v)); } }
public void Contains() { SimpleList <StringBuilder> builders = new SimpleList <StringBuilder>(2); StringBuilder firstBuilder = new StringBuilder(); StringBuilder secondBuilder = new StringBuilder(); builders.Add(firstBuilder); builders.Add(secondBuilder); Assert.AreEqual(true, builders.Contains(firstBuilder)); Assert.AreEqual(false, builders.Contains(new StringBuilder())); SimpleList <int> numbers = new SimpleList <int>(new int[] { 1, 2, 3 }); Assert.AreEqual(true, numbers.Contains(3)); Assert.AreEqual(false, numbers.Contains(4)); SimpleList <string> nulls = new SimpleList <string>(new string[] { null, null, null }); Assert.ThrowsException <NullReferenceException>(() => nulls.Contains(null)); }
internal override MSOFormula <T> SubstituteVariables1(Dictionary <string, Variable> subst, SimpleList <string> bound) { var v = (bound.Contains(var.Name) ? var : (subst.ContainsKey(var.Name) ? subst[var.Name] : var)); if (v == var) { return(this); } else { if (v.IsFirstOrder != var.IsFirstOrder) { throw new ArgumentException("invalid substitution"); } return(new MSOIsSingleton <T>(v)); } }
private void Solve(SudokuState state, SudokuRegion region, SudokuRegion intersected, uint value, ICollection <IEvent> events) { var count = 0; foreach (var index in region) { if ((state[index] & value) != 0) { if (intersection.Contains(index)) { count++; } else { return; } } } if (count > 1) { Fetch(value, intersection, intersected, state, events); } }
private bool Fetch(uint value, SudokuRegion region, SudokuState state, ICollection <IEvent> events) { var reducded = false; var mask = ~value; foreach (var index in region) { if (buffer.Contains(index)) { continue; } var result = state.And <ReduceXWing>(index, mask); if (result is ValueFound) { events.Add(result); } else if (result is ReducedOption) { reducded = true; } } return(reducded); }
public bool Contains(T item) { return(data.Contains(item)); }
public void listContainsASpecificValue() { var list = new SimpleList<int>(){ 1, 7, 8 }; Assert.AreEqual(true, list.Contains(7)); }