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);
        }
Example #2
0
        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)}";
        }
Example #3
0
        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);
        }