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); }
//----------------------------------------------------------------- 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); }
//----------------------------------------------------------------- //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()); }
//----------------------------------------------------------------- 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); } } }
//----------------------------------------------------------------- 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)); }
//----------------------------------------------------------------- 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); }
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(); } }
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); }