You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TextReaderGenerator.cs 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System.IO;
  2. using uqac_ia_sudoku_csp.Interfaces;
  3. namespace uqac_ia_sudoku_csp.Solver.Generators
  4. {
  5. public class TextReaderGeneratorDbo
  6. {
  7. public TextReader Reader { get; set; }
  8. public string EmptyCharacters { get; set; }
  9. }
  10. public class TextReaderGenerator : IGenerator
  11. {
  12. public virtual void Generate(Board board, object data)
  13. {
  14. var dbo = data as TextReaderGeneratorDbo;
  15. for (var y = 0; y < board.Size; ++y)
  16. {
  17. for (var x = 0; x < board.Size; ++x)
  18. {
  19. string c;
  20. do
  21. {
  22. c = $"{(char)dbo.Reader.Read()}";
  23. } while (!dbo.EmptyCharacters.Contains(c) && !board.Characters.Contains(c));
  24. if (dbo.EmptyCharacters.Contains(c))
  25. {
  26. board.ClearNumber(x, y);
  27. }
  28. else if (board.Characters.Contains(c))
  29. {
  30. board.SetCharacter(x, y, c[0]);
  31. }
  32. }
  33. }
  34. }
  35. }
  36. }