public Cube MakeTurn(Cube inputState) { var result = new Cube(inputState.Dim); var keys = CubeAnalyzer.GetPossibilities(inputState); foreach (var key in keys) { var value = checker.Check(inputState, key); CellState newState = placeSpecifier.GetState(inputState.GetValue(key).Value, value); result.SetCell(newState, key); } return(result); }
protected override void Result(out string result) { var input = ReadTable("Input1.txt"); var lastState = new CubeCreator().Create(input, GetDim()); int counter = 1; while (counter <= 6) { lastState = GetTurnMaker().MakeTurn(lastState); counter++; } result = $"{CubeAnalyzer.GetNoOfActiveCube(lastState)}"; }
public long Check(Cube input, CubeKey dims) { var result = 0; var keysToCheck = CubeAnalyzer.GenerateKeysToCheck(input, dims); foreach (var key in keysToCheck) { var value = input.GetValue(key); if (value == CellState.Active) { result++; } } return(result); }