コード例 #1
0
        int SkipGarbage(string input, int start)
        {
            var offset = start + 1;

            while (true)
            {
                if (offset == input.Length)
                {
                    Oh.Bollocks();
                }
                switch (input[offset])
                {
                case '>':
                    removeCharacters += (offset - start) - 1;
                    return(offset - start);

                case '!':
                    removeCharacters -= 2;
                    offset           += 2;
                    break;

                default:
                    offset++;
                    break;
                }
            }
        }
コード例 #2
0
ファイル: Problem2101.cs プロジェクト: elpollouk/Advent2017
        GridWriter CreateWriter(string pattern)
        {
            return((grid, x, y) =>
            {
                var cX = x;
                var cY = y;
                foreach (var c in pattern)
                {
                    switch (c)
                    {
                    case '.':
                        grid[cX++, cY] = false;
                        break;

                    case '#':
                        grid[cX++, cY] = true;
                        break;

                    case '/':
                        cX = x;
                        cY++;
                        break;

                    default:
                        Oh.Bollocks();
                        break;
                    }
                }
            });
        }
コード例 #3
0
ファイル: Problem1901.cs プロジェクト: elpollouk/Advent2017
        string FollowPath(Map map, int entryPoint, out int numSteps)
        {
            var result = "";

            var x  = entryPoint;
            var y  = 0;
            var dX = 0;
            var dY = 1;

            numSteps = 0;

            while (true)
            {
                var c = map.GetCell(x, y);
                switch (c)
                {
                case '|':
                case '-':
                    break;

                case '+':
                    ChangeDirection(map, x, y, ref dX, ref dY);
                    break;

                case ' ':
                    return(result);

                default:
                    if (IsLetter(c))
                    {
                        result += c;
                    }
                    else
                    {
                        Oh.Bollocks();
                    }
                    break;
                }

                x += dX;
                y += dY;
                numSteps++;
            }
        }