namespace Day14; public class BoulderMap { private readonly char[][] _lines; public BoulderMap(IList lines) { _lines = lines.Select(l => l.ToCharArray()).ToArray(); } public int CalculateMaxNorthLoad() { var load = 0; for (var x = 0; x < _lines[0].Length; x++) { var freeY = 0; for (var y = 0; y < _lines.Length; y++) { switch (_lines[y][x]) { case 'O': if (y != freeY) { _lines[y][x] = _lines[freeY][x]; _lines[freeY][x] = 'O'; } load += _lines.Length - freeY; freeY++; break; case '#': freeY = y + 1; break; } } } foreach (var l in _lines) { Console.WriteLine(l); } return load; } }