Example #1
0
    private int FindInvalidIndexe(long[] numbers, int preambleSize)
    {
        var toParse = numbers.Length - preambleSize;

        _preamble?.SetValue(string.Join(",", numbers.Take(preambleSize)));
        var invalidIndex = new List <int>();

        for (int i = preambleSize; i < numbers.Length; i++)
        {
            _progress?.SetValue(i / (float)toParse);
            _currentIndex?.SetValue(i);
            var previous = numbers.Skip(i - preambleSize).Take(preambleSize).ToList();
            var validSum = GetValidSum(numbers[i], previous);
            var indexStr = i.ToString("000");
            if (!validSum.HasValue)
            {
                Console.WriteLine($"{indexStr}: Found nothing for number {numbers[i]}", ConsoleColor.Red);
                invalidIndex.Add(i);
                _progress?.SetValue(1f);
                return(i);
            }
            else
            {
                var value = validSum.Value;
                Console.WriteLine($"{indexStr}: {previous[value.i]} + {previous[value.j]} = {numbers[i]}");
            }
        }
        _progress?.SetValue(1f);
        return(0);
    }
Example #2
0
    //-----------------------------------------------------------------

    public override void SetUpConsolePart2()
    {
        Console.Header.ReserveLines(1);
        _itteration = Console.Header.CreateFormatedValue(5, "Itteration: ");

        _itteration.SetValue(10);
        _aFloat   = Console.Header.CreateFormatedValue(6, "Float: ");
        _percent1 = Console.Header.CreateFormatedValue(6, "Percent: ");
        _percent2 = Console.Header.CreateBlockValue(2, "Percent: ", ValueToUTFBars.Styles.Horizontal);
    }
Example #3
0
    //-----------------------------------------------------------------
    //2600183168364  too low
    public override long Part1(string input)
    {
        var mem       = new Dictionary <int, ulong>();
        var mask      = new List <(int Index, int Override)>();
        var keepGoing = false;

        var lines = input.Split("\n");

        for (int i = 0; i < lines.Length; i++)
        {
            var line = lines[i];
            _progress?.SetValue(1f * i / lines.Length);
            if (line.Contains("mask"))
            {
                mask = ParseMask(line);
                ShowMask(mask, line);
            }
            else
            {
                var write       = ParseWrite(line);
                var valueMasked = MaskValue(write.Value, mask);
                mem[write.Key] = valueMasked;
                ShowValue(write.Value, valueMasked, mask);
                //Console.WriteLine($"Write at {write.Key} value {write.Value}, masked : {valueMasked}");
                if (_currentSum != null)
                {
                    _currentSum.SetValue(((long)mem.Select(x => (long)x.Value).Sum()).ToString());
                }
            }
            if (!keepGoing)
            {
                if (Console.ReadKey().Key == ConsoleKey.Enter)
                {
                    keepGoing = true;
                }
            }
        }
        _progress?.SetValue(1f);
        return((long)mem.Select(x => (long)x.Value).Sum());
    }
Example #4
0
    //-----------------------------------------------------------------

    public override long Part1(string input)
    {
        var inputValues = InputParser.ListOfInts(input).ToList();

        inputValues.Sort();
        int itteration = 0;
        var random     = new Random();

        while (true)
        {
            int a = random.Next(inputValues.Count);
            int b = random.Next(inputValues.Count);
            if (inputValues[a] + inputValues[b] == 2020)
            {
                return(inputValues[a] * inputValues[b]);
            }
            itteration++;
            if (itteration % 10 == 0)
            {
                _itteration?.SetValue(itteration);
            }
        }
    }
Example #5
0
    //-----------------------------------------------------------------

    public override long Part1(string input)
    {
        for (int i = 0; i < 10; i++)
        {
            Thread.Sleep(100);
            _itteration?.SetValue(i);
            var f = (float)RandomGen.NextDouble();
            _aFloat?.SetValue(f);
            _aFormatedFloat?.SetValue(f);
            Console.WriteLine("Itteration " + i);


            var percent = i * 1f / 9f;
            _percent1?.SetValue(percent);
            _percent2?.SetValue(percent);
            _percent3?.SetValue(percent);
            _percent4?.SetValue(percent);
            _percent5?.SetValue(percent);
            _percent6?.SetValue(percent);
        }

        return((long)(RandomGen.NextDouble() * 1000));
    }
Example #6
0
    //-----------------------------------------------------------------

    public override void SetUpConsolePart1()
    {
        Console.Header.ReserveLines(10);
        _itteration = Console.Header.CreateFormatedValue(5, "Itteration: ");

        _itteration.SetValue(10);
        _aFloat         = Console.Header.CreateFormatedValue(6, "Float: ");
        _aFormatedFloat = Console.Header.CreateFormatedValue(6, "Formated Float: ", "F3");

        _percent1 = Console.Header.CreateFormatedValue(6, "Percent: ");
        _percent2 = Console.Header.CreateBlockValue(2, "Percent: ", ValueToUTFBars.Styles.Horizontal);
        _percent3 = Console.Header.CreateBlockValue(5, "Percent: ", ValueToUTFBars.Styles.Vertical);
        _percent4 = Console.Header.CreateBlockValue(10, "Percent: ", ValueToUTFBars.Styles.Shades);
        _percent5 = Console.Header.CreateBlockValue(15, "Percent: ", ValueToUTFBars.Styles.Circle);
        _percent6 = Console.Header.CreateBlockValue(1, "Percent: ", ValueToUTFBars.Styles.CenteredVerticalBar);
    }
Example #7
0
        public void Step()
        {
            if (y >= _totalHeight)
            {
                return;
            }

            Grid[x, y] = LastTile;
            x         += _direction.X;
            y         += _direction.Y;

            if (Renderer != null)
            {
                Renderer.Offset = new Point(x - Renderer.Viewport.Width / 2, y - Renderer.Viewport.Height / 2);
            }

            var gridValue = Grid[x, y];

            Grid[x, y] = '@';

            if (gridValue == '#')
            {
                LastTile = 'X';
                HitTrees++;
                if (TreeHitHeader != null)
                {
                    TreeHitHeader.SetValue(HitTrees);
                }
            }
            else
            {
                LastTile = 'O';
                OpenSquare++;
            }

            if (Renderer != null)
            {
                Renderer.Update();
            }
        }
Example #8
0
    private Plane GetPlane(string input)
    {
        var seats = new List <Point>();
        var plane = new Plane(seats);

        var index   = 0;
        var tickets = input.Split("\n");

        foreach (var item in tickets)
        {
            if (_progress != null)
            {
                _progress.SetValue(++index / (float)tickets.Count());
            }
            var seat = ParseSeat(item);
            plane.TakenSeats[seat.X, seat.Y] = true;
            var rowFirst = plane.FirstSeat[seat.Y];
            var rowLast  = plane.LastSeat[seat.Y];

            var displayY = seat.Y;
            if (seat.Y >= 4)
            {
                displayY += 2;
            }

            var wasFirstOrLast = false;
            if (rowFirst > seat.X)
            {
                wasFirstOrLast = true;
                if (rowFirst <= 128 && rowLast != rowFirst)
                {
                    SetColorForCol(seat.Y);
                    BetterConsole.WriteAt('X', PlaneOffset.X + rowFirst, PlaneOffset.Y + displayY);
                }
                plane.FirstSeat[seat.Y]        = seat.X;
                System.Console.ForegroundColor = ConsoleColor.Red;
                BetterConsole.WriteAt('X', PlaneOffset.X + seat.X, PlaneOffset.Y + displayY);
            }

            if (rowLast < seat.X)
            {
                wasFirstOrLast = true;
                if (rowLast >= 0 && rowLast != rowFirst)
                {
                    SetColorForCol(seat.Y);
                    BetterConsole.WriteAt('X', PlaneOffset.X + rowLast, PlaneOffset.Y + displayY);
                }
                plane.LastSeat[seat.Y] = seat.X;

                System.Console.ForegroundColor = ConsoleColor.Red;
                BetterConsole.WriteAt('X', PlaneOffset.X + seat.X, PlaneOffset.Y + displayY);
            }

            if (!wasFirstOrLast)
            {
                SetColorForCol(seat.Y);
                BetterConsole.WriteAt('X', PlaneOffset.X + seat.X, PlaneOffset.Y + displayY);
            }

            seats.Add(seat);
        }

        return(plane);
    }