Esempio n. 1
0
        private void DoPart1(string input)
        {
            var hexagonInstructions = ParseInput(input);

            foreach (var hexagonInstruction in hexagonInstructions)
            {
                var coords = new HexagonCoordinate(0, 0);

                foreach (var instruction in hexagonInstruction.Instructions)
                {
                    switch (instruction)
                    {
                    case HexagonInstructionDirection.East:
                        coords.X += 2;
                        break;

                    case HexagonInstructionDirection.SouthEast:
                        coords.X++;
                        coords.Y--;
                        break;

                    case HexagonInstructionDirection.SouthWest:
                        coords.X--;
                        coords.Y--;
                        break;

                    case HexagonInstructionDirection.West:
                        coords.X -= 2;
                        break;

                    case HexagonInstructionDirection.NorthWest:
                        coords.X--;
                        coords.Y++;
                        break;

                    case HexagonInstructionDirection.NorthEast:
                        coords.X++;
                        coords.Y++;
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }

                if (_hexagonCoords.ContainsKey(coords))
                {
                    _hexagonCoords[coords] = !_hexagonCoords[coords];
                }
                else
                {
                    _hexagonCoords.Add(coords, true);
                }
            }
        }
Esempio n. 2
0
        private int GetNeighbouringBlackTiles(Dictionary <HexagonCoordinate, bool> hexCoords,
                                              HexagonCoordinate coordinates)
        {
            var blackTilesFound = 0;

            for (var j = 0; j < 6; j++)
            {
                var coordCheck = coordinates.GetCoordDiff(_directionsToCheck[j]);
                if (hexCoords.ContainsKey(coordCheck))
                {
                    blackTilesFound += hexCoords[coordCheck] ? 1 : 0;
                }
            }

            return(blackTilesFound);
        }
Esempio n. 3
0
 public HexagonCoordinate GetCoordDiff(HexagonCoordinate coords)
 {
     return(new HexagonCoordinate(X + coords.X, Y + coords.Y));
 }