public int FindSeat() { var seatIdsPlusOne = BoardingPasses.Select(bp => bp.SeatId + 1); var seatIdsMinusOne = BoardingPasses.Select(bp => bp.SeatId - 1); var overlappingIds = seatIdsPlusOne.Intersect(seatIdsMinusOne); return(overlappingIds.Except(BoardingPasses.Select(bp => bp.SeatId)).Max()); }
public void Part2() { var orderedPasses = BoardingPasses.OrderBy(p => p.SeatId).ToArray(); var adjacentPairs = orderedPasses.Zip(orderedPasses.Skip(1)); var(seatBefore, _) = adjacentPairs.Single(p => p.Second.SeatId - p.First.SeatId == 2); var mySeatId = seatBefore.SeatId + 1; Assert.AreEqual(534, mySeatId); }
private void Button_Add_Click(object sender, EventArgs e) { // add new reservation. var reservationDialog = new AddReservationDialog(Passenger); if (reservationDialog.ShowDialog() == DialogResult.OK) { BoardingPasses.Add(new BoardingPass(0, Convert.ToInt32(reservationDialog.comboBox_Flight.Text), Passenger.ID, 0, reservationDialog.comboBox_Class.Text, false)); LoadFormData(); } }
static void Main(string[] args) { var days = new List <IDay>() { ExpenseReport.LoadFromFile("Day01/ExpenseReport.txt"), PasswordValidator.LoadFromFile("Day02/Passwords.txt"), Map.LoadFromFile("Day03/Map.txt"), PassportValidator.LoadFromFile("Day04/PassportData.txt"), BoardingPasses.LoadFromFile("Day05/Seats.txt"), Declerations.LoadFromFile("Day06/Declerations.txt"), LuggageRules.LoadFromFile("Day07/LuggageRules.txt"), GameConsole.LoadFromFile("Day08/BootCode.txt"), AdditionSystem.LoadFromFile("Day09/Data.txt"), JoltAdapters.LoadFromFile("Day10/JoltAdapters.txt"), SeatingLayout.LoadFromFile("Day11/SeatingLayout.txt"), Navigation.LoadFromFile("Day12/NavigationInstructions.txt"), Buses.LoadFromFile("Day13/Buses.txt"), DockingProgram.LoadFromFile("Day14/DockingProgram.txt"), MemoryGame.Create("15,12,0,14,3,1"), TicketAnalyser.LoadFromFile("Day16/TicketData.txt"), ConwayCube.LoadFromFile("Day17/ConwayCube.txt"), OperationOrder.LoadFromFile("Day18/Expressions.txt"), JurassicJigsaw.LoadFromFile("Day20/Tiles.txt"), Combat.LoadFromFile("Day22/Cards.txt") }; var invalidCount = 0; foreach (var day in days) { var part1 = day.Part1(); var part2 = day.Part2(); var part1Invalid = !string.IsNullOrWhiteSpace(day.ValidatedPart1) && part1 != day.ValidatedPart1; var part2Invalid = !string.IsNullOrWhiteSpace(day.ValidatedPart2) && part2 != day.ValidatedPart2; invalidCount += part1Invalid ? 1 : 0; invalidCount += part2Invalid ? 1 : 0; var part1InvalidString = part1Invalid ? " INVALID" : ""; var part2InvalidString = part2Invalid ? " INVALID" : ""; Console.WriteLine($"Day {day.DayNumber} Part 1: {part1}{part1InvalidString}"); Console.WriteLine($"Day {day.DayNumber} Part 2: {part2}{part2InvalidString}"); } Console.WriteLine($"{invalidCount} INVALID Results"); }
public AddPassengerDialog(int id = 0) { InitializeComponent(); // Make column titles bold. for (int i = 0; i < listView_Reservations.Columns.Count; i++) { listView_Reservations.Columns[i].ListView.Font = new Font(listView_Reservations.Font, FontStyle.Bold); } DialogResult = DialogResult.Cancel; // if the id isnt 0, then we are editing an existing passenger. if (id == 0) { Text = "Add Passenger"; Passenger = new Passenger(); } else { Text = "Edit Passenger"; //retrieve passenger information from the database. Passenger = Database.GetPassenger(id); // populate form with passenger data. dateTimePicker_DOB.Value = Passenger.DateOfBirth; textBox_Name.Text = Passenger.Name; textBox_Address.Text = Passenger.Address; textBox_Cost.Text = Passenger.Cost.ToString(); textBox_Email.Text = Passenger.Email; textBox_Number.Text = Passenger.Number; textBox_SpecialAccommodations.Text = Passenger.SpecialAccommodations; comboBox_Preference.SelectedIndex = (int)Passenger.SeatingPreference; // add all boarding passes associated with the passenger to the list. foreach (var boardingPass in Passenger.BoardingPasses.FindAll(x => x.Issued == false)) { BoardingPasses.Add(boardingPass); } LoadFormData(); // load form data. } }
private void Button_Remove_Click(object sender, EventArgs e) { if (listView_Reservations.SelectedItems.Count > 0) { // find the boarding pass in the database. var pass = BoardingPasses.Find(x => x.ID == Convert.ToInt32(listView_Reservations.SelectedItems[0].Tag)); // Get the price of the seat. int seatPrice = 0; if (pass.Class == "First Class") { seatPrice = 300; } else if (pass.Class == "Business Class") { seatPrice = 200; } // update the passenger cost with the seat cost. Passenger.Cost -= (pass.Flight.Price + seatPrice); textBox_Cost.Text = Passenger.Cost.ToString(); if ((int)listView_Reservations.SelectedItems[0].Tag == 0) { BoardingPasses.RemoveAt(listView_Reservations.SelectedItems[0].Index); } else { RemovedBoardingPasses.Add(BoardingPasses.Find(x => x.ID == Convert.ToInt32(listView_Reservations.SelectedItems[0].Tag))); BoardingPasses.Remove(BoardingPasses.Find(x => x.ID == Convert.ToInt32(listView_Reservations.SelectedItems[0].Tag))); } listView_Reservations.Items.Remove(listView_Reservations.SelectedItems[0]); LoadFormData(); } }
public void Part1() { Assert.AreEqual(991, BoardingPasses.Max(p => p.SeatId)); }