BoulderMap.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. namespace Day14;
  2. public class BoulderMap
  3. {
  4. private readonly char[][] _lines;
  5. public BoulderMap(IList<string> lines)
  6. {
  7. _lines = lines.Select(l => l.ToCharArray()).ToArray();
  8. }
  9. public int CalculateMaxNorthLoad()
  10. {
  11. var load = 0;
  12. for (var x = 0; x < _lines[0].Length; x++)
  13. {
  14. var freeY = 0;
  15. for (var y = 0; y < _lines.Length; y++)
  16. {
  17. switch (_lines[y][x])
  18. {
  19. case 'O':
  20. if (y != freeY)
  21. {
  22. _lines[y][x] = _lines[freeY][x];
  23. _lines[freeY][x] = 'O';
  24. }
  25. load += _lines.Length - freeY;
  26. freeY++;
  27. break;
  28. case '#':
  29. freeY = y + 1;
  30. break;
  31. }
  32. }
  33. }
  34. foreach (var l in _lines)
  35. {
  36. Console.WriteLine(l);
  37. }
  38. return load;
  39. }
  40. }