/// <inheritdoc /> public void Solve(SudokuPuzzle puzzle, SudokuState state, ICollection <IEvent> events) { foreach (var region in puzzle.Regions) { foreach (var intersected in region.Intersected) { intersection.Clear(); intersection.AddRange(region.Intersect(intersected)); // We found candidate intersections if (intersection.Count > 1) { foreach (var value in puzzle.SingleValues) { var pre = events.Count; Solve(state, region, intersected, value, events); if (pre != events.Count) { return; } } } } } }
public SimpleList <string[]> GetRowsWithValue(SimpleList <string[]> textLines, string value) { var result = new SimpleList <string[]>(); result.AddRange(textLines.Where(line => line[0] == value)); return(result); }