Arrangement.cs 899 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. namespace Day12;
  2. public class Arrangement
  3. {
  4. private readonly IList<byte> _items;
  5. public Arrangement(string arrangement)
  6. {
  7. _items = arrangement.Select(c =>
  8. {
  9. switch (c)
  10. {
  11. case '.':
  12. return (byte) 0;
  13. case '#':
  14. return (byte) 1;
  15. default:
  16. return (byte) 255;
  17. }
  18. }).ToList();
  19. }
  20. public Checksum CalculateChecksum()
  21. {
  22. var values = new List<int>();
  23. var c = 0;
  24. foreach (var i in _items)
  25. {
  26. if (i == 1)
  27. {
  28. c++;
  29. }
  30. else if (c > 0)
  31. {
  32. values.Add(c);
  33. c = 0;
  34. }
  35. }
  36. return new Checksum(values.ToArray());
  37. }
  38. }