protected override void DoGold() { PerfMon.Monitor("Calculate", () => { Result = encoder.ContiguousSet(); }); }
protected override void DoGold() { PerfMon.Monitor("Calculate", () => { Result = CountGold(bags.First(x => x.LuggageKind == "shiny gold")); }); }
protected override void ParseInput() { PerfMon.Monitor("Read", () => { var input = ReadInput(); StringBuilder builder = new StringBuilder(); int count = 0; for (int i = 0; i < input.Length; i++) { if (string.IsNullOrEmpty(input[i]) || i == input.Length - 1) { if (i == input.Length - 1) { count++; builder.Append(input[i]); } groups.Add(new FlightGroup { PeopleCount = count, Answers = builder.ToString() }); count = 0; builder.Clear(); } else { count++; builder.Append(input[i]); } } }); }
protected override void DoSilver() { PerfMon.Monitor("Parse", () => { ParseInput(); }); PerfMon.Monitor("Calculate", () => { var memory = new long[masks.SelectMany(x => x.ValueToMemoryPosition.Select(y => y.MemoryAddress)).Max()]; foreach (var mask in masks) { ApplyMask(mask, memory); } var result = (long)0; foreach (var val in memory) { result += val; } Result = result; }); }
protected override void ParseInput() { StringBuilder builder = new StringBuilder(); PerfMon.Monitor("Parse", () => { var lines = ReadInput(); foreach (var line in lines) { if (string.IsNullOrWhiteSpace(line)) { var passport = new Passport(); var properties = builder.ToString().Split(' ').SelectMany(x => x.Split(':')).ToList(); for (int i = 0; i < properties.Count(); i += 2) { passport.Fields.Add(properties[i], properties[i + 1]); } passports.Add(passport); builder = new StringBuilder(); } else { if (builder.Length > 0) { builder.Append(" " + line); } else { builder.Append(line); } } } }); }
protected override void DoSilver() { PerfMon.Monitor("Parse", () => ParseInput()); PerfMon.Monitor("Calculate", () => { newSeatStatus = Seats; cycles = 0; while (cycles == 0 || !StatusSame(Seats, newSeatStatus)) { cycles++; Seats = newSeatStatus; newSeatStatus = Seats.Select(x => new char[x.Count()]).ToList(); for (int row = 0; row < Seats.Count; row++) { for (int seat = 0; seat < Seats[row].Count(); seat++) { Evaluate2(row, seat); } } } Console.WriteLine("Done in {0} cycles", cycles); Result = Seats.Sum(x => x.Count(y => y == '#')); }); }
protected override void DoGold() { PerfMon.Monitor("Calculate", () => { var res = new List <long>(); foreach (var line in lines) { var trimmedLine = line.Replace(" ", ""); Stack <string> calculation = new Stack <string>(); foreach (var c in trimmedLine) { calculation.Push(c.ToString()); if (c == ')') { var poppedChar = default(string); StringBuilder a = new StringBuilder(); while (poppedChar != "(") { calculation.TryPop(out poppedChar); a.Insert(0, poppedChar); if (poppedChar == "(") { var result = CalcString2(a.ToString().Substring(1, a.Length - 2)); calculation.Push(result.ToString()); } } } } res.Add(CalcString2(calculation.Reverse().Aggregate((a, b) => a + b))); } Result = res.Sum(); }); }
protected override void DoGold() { PerfMon.Monitor("Calculate", () => { Result = 0; Rules.First(x => x.Id == 8).Constraint = "42 | 42 8"; Rules.First(x => x.Id == 11).Constraint = "42 31 | 42 11 31"; var allCombinations = GetString(42); var allCombinations2 = GetString(31); foreach (var input in Inputs) { for (int i = 1; i < 20; i++) { var ft = allCombinations.Aggregate((a, b) => a + "|" + b); var to = allCombinations2.Aggregate((a, b) => a + "|" + b); var a = Regex.Match(input, $"^({ft})+(({ft})" + "{" + i + "}" + $"({to})" + "{" + i + "}" + ")$"); if (a.Success) { Result++; } } } }); }
protected override void DoGold() { PerfMon.Monitor("Calculate", () => { Result = adapters.SolveCombinations(0, 0); }); }
protected override void DoGold() { PerfMon.Monitor("Calculate", () => { Result = groups.Select(x => x.SameAnswerCount()).Sum(); }); }
protected override void DoSilver() { ParseInput(); PerfMon.Monitor("Calculate", () => { Result = passes.Select(x => x.GetSeatId()).Max(); }); }
protected override void DoGold() { ParseInput(); PerfMon.Monitor("Calculate", () => { Result = positions.Select(x => x.CalculateTrees()).Aggregate((x, y) => x * y); }); }
protected override void DoSilver() { ParseInput(); PerfMon.Monitor("Calculate", () => { Result = groups.Select(x => x.Answers.Distinct().Count()).Sum(); }); }
static void Main(string[] args) { PerfMon.Monitor("DayTotal", () => { var solution = new Solution(); solution.Solve(); }); }
protected override void DoGold() { PerfMon.Monitor("Calculate", () => { var allPasses = passes.Select(x => x.GetSeatId()).OrderBy(x => x); var allNumbers = Enumerable.Range(allPasses.Min(), allPasses.Count()); Result = allNumbers.Except(allPasses).First(); }); }
protected override void ParseInput() { var lines = ReadInput(); PerfMon.Monitor("Parse", () => { encoder.Cypher = lines.Select(x => long.Parse(x)).ToList(); }); }
protected override void DoSilver() { ParseInput(); encoder.Preamble = 25; PerfMon.Monitor("Calculate", () => { Result = encoder.FindBadNumber(); }); }
protected override void DoGold() { PerfMon.Monitor("Parse", () => ParseInput()); PerfMon.Monitor("Calculate", () => { var wrongNumbers = new List <long[]>(); nearbyTickets.ForEach(x => { var remove = false; foreach (var number in x) { if (!rules.Any(y => (y.LowerValues.Item1 <= number && number <= y.LowerValues.Item2) || (y.HigherValues.Item1 <= number && number <= y.HigherValues.Item2))) { remove = !remove; } } if (remove) { wrongNumbers.Add(x); } }); wrongNumbers.ForEach(x => nearbyTickets.Remove(x)); for (int i = 0; i < nearbyTickets[0].Length; i++) { var valuesOfOneField = nearbyTickets.Select(x => x[i]); var matches = new List <string>(); foreach (var rule in rules) { //if (rule.Any(y => (y.LowerValues.Item1 <= number && number <= y.LowerValues.Item2) || (y.HigherValues.Item1 <= number && number <= y.HigherValues.Item2))) if (valuesOfOneField.All(y => (rule.LowerValues.Item1 <= y && y <= rule.LowerValues.Item2) || (rule.HigherValues.Item1 <= y && y <= rule.HigherValues.Item2))) { matches.Add(rule.Name); } } allCombis.Add(i, matches); } ruleOrder = Filter(allCombis); var result = (long)1; for (int i = 0; i < ruleOrder.Count; i++) { if (ruleOrder[i].IndexOf("departure") != -1) { result *= myTicket[i]; } } Result = result; }); }
protected override void DoSilver() { PerfMon.Monitor("Parse", () => { ParseInput(); }); PerfMon.Monitor("Calculate", () => { Result = adapters.CountDifferences(); }); }
protected override void DoSilver() { PerfMon.Monitor("Parse", () => { ParseInput(); }); PerfMon.Monitor("Calculate", () => { Result = bags.Select(x => FindGold(x)).Count(x => x == true); }); }
protected override void ParseInput() { PerfMon.Monitor("Parse", () => { var lines = ReadInput(); var area = new List <char[]>(); // Create Area for (int i = 0; i < lines.Count(); i++) { area.Add(lines[i].ToCharArray()); } // Create MoveSettings positions = new List <Area>() { new Area { Map = area, Settings = new MoveSettings { Right = 1, Down = 1 } }, new Area { Map = area, Settings = new MoveSettings { Right = 3, Down = 1 } }, new Area { Map = area, Settings = new MoveSettings { Right = 5, Down = 1 } }, new Area { Map = area, Settings = new MoveSettings { Right = 7, Down = 1 } }, new Area { Map = area, Settings = new MoveSettings { Right = 1, Down = 2 } } }; }); }
protected override void DoGold() { PerfMon.Monitor("Calculate", () => { Ship ship = new Ship(); foreach (var command in AllCommands) { ship.MoveWaypoint(command); } Result = ship.Coordinates.Sum(x => Math.Abs(x)); }); }
protected override void ParseInput() { PerfMon.Monitor("Read", () => { var lines = ReadInput(); foreach (var line in lines) { passes.Add(new BoardingPass() { Pass = line }); } }); }
protected override void DoSilver() { PerfMon.Monitor("Read", () => { ParseInput(); }); PerfMon.Monitor("Calculate", () => { var allCombinations = GetString(0); Result = Inputs.Intersect(allCombinations).Count(); }); }
protected override void DoGold() { PerfMon.Monitor("Parse", () => ParseInput()); PerfMon.Monitor("Calculate", () => { for (int cycle = 0; cycle < 6; cycle++) { AddExtraRows2(); _cubeStates2 = CheckNeighbours(cycle, _cubeStates2); } Result = _cubeStates2.Select(x => x.Value).Count(x => x); }); }
protected override void DoSilver() { PerfMon.Monitor("Read", () => ParseInput()); PerfMon.Monitor("Calculate", () => { Ship ship = new Ship(); foreach (var command in AllCommands) { ship.Move(command); } Result = ship.Coordinates.Sum(x => Math.Abs(x)); }); }
protected override void DoSilver() { ParseInput(); PerfMon.Monitor("Calculate", () => { foreach (var number in allNumbers) { var result = allNumbers.Except(new int[] { number }).Where(y => y + number == 2020).FirstOrDefault(); if (result != default(int)) { Result = result * number; return; } } }); }
protected override void ParseInput() { PerfMon.Monitor("Read", () => { var lines = ReadInput(); foreach (var line in lines) { var match = Regex.Match(line, "(\\d*)-(\\d*) (.*): (.*)"); policies.Add(new Policy { MinOccur = int.Parse(match.Groups[1].Value), MaxOccur = int.Parse(match.Groups[2].Value), Sequence = match.Groups[3].Value[0], Password = match.Groups[4].Value, }); } }); }
protected override void DoGold() { PerfMon.Monitor("Calculate", () => { foreach (var number in allNumbers) { foreach (var nu in allNumbers.Except(new int[] { number })) { var result = allNumbers.Except(new int[] { number, nu }).Where(y => y + number + nu == 2020).FirstOrDefault(); if (result != default(int)) { Result = result * number * nu; return; } } } }); }
protected override void DoSilver() { PerfMon.Monitor("Parse", () => ParseInput()); PerfMon.Monitor("Calculate", () => { var wrongNumbers = new List <long>(); nearbyTickets.ForEach(x => { foreach (var number in x) { if (!rules.Any(y => (y.LowerValues.Item1 <= number && number <= y.LowerValues.Item2) || (y.HigherValues.Item1 <= number && number <= y.HigherValues.Item2))) { wrongNumbers.Add(number); } } }); Result = wrongNumbers.Sum(); }); }