public void distributeEnrollees() { for (int i = 0; i < variants; i++) { List <Enrollee>[] studentsOrders = new List <Enrollee> [specialities.Length]; for (int j = 0; j < enrollees.Length; j++) { if (flags[j] == true) { continue; } Enrollee en = enrollees[j]; Request[] req = en.Request.ToArray(); Array.Sort(req, (x, y) => x.Priority.CompareTo(y.Priority)); Speciality sp = req[i].IdSpecialityNavigation; int indexOfUniv = Array.IndexOf(specialities, sp); if (studentsOrders[indexOfUniv] == null) { studentsOrders[indexOfUniv] = new List <Enrollee>(); } studentsOrders[indexOfUniv].Add(en); } for (int k = 0; k < studentsOrders.Length; k++) { Speciality curr = specialities[k]; List <Enrollee> orders = studentsOrders[k]; if (orders == null) { continue; } orders.Sort((y, x) => x.Zno.CompareTo(y.Zno)); foreach (Enrollee stud in orders.ToArray()) { Rules rule = curr.Rules.First(); int palces = rule.Count; bool enoughScore = (rule.Score < stud.Zno) ? true : false; if (dict.ContainsKey(curr) == false) { dict[curr] = new List <Enrollee>(); } if (enoughScore == true && dict[curr].Count < rule.Count) { dict[curr].Add(stud); int indexOfStud = Array.IndexOf(enrollees, stud); flags[indexOfStud] = true; } } } } int cc = 0; for (int r = 0; r < flags.Length; r++) { if (flags[r] == false) { cc++; } } Console.WriteLine($" free student: {cc}"); //распределить остольных List <Enrollee> freeEnrollers = new List <Enrollee>(); for (int p = 0; p < flags.Length; p++) { if (flags[p] == false) { freeEnrollers.Add(enrollees[p]); } } freeEnrollers.Sort((x, y) => x.Zno.CompareTo(y.Zno)); foreach (Enrollee enr in freeEnrollers.ToArray()) { Request[] req = enr.Request.ToArray(); Array.Sort(req, (x, y) => x.Priority.CompareTo(y.Priority)); foreach (Request _req in req) { Speciality spec = _req.IdSpecialityNavigation; Rules rule = spec.Rules.First(); int palces = rule.Count; bool enoughScore = (rule.Score < enr.Zno) ? true : false; if (enoughScore == true && dict[spec].Count < rule.Count) { dict[spec].Add(enr); int indexOfStud = Array.IndexOf(enrollees, enr); flags[indexOfStud] = true; } } } //end foreach (KeyValuePair <Speciality, List <Enrollee> > entry in dict) { Console.WriteLine($"University: {entry.Key.IdDepartmentNavigation.IdUniversityNavigation.Name}\n\tSpeciality: {entry.Key.Name}"); Console.WriteLine($"Rules: count = {entry.Key.Rules.First().Count}, students = {entry.Value.Count}"); foreach (Enrollee stud in entry.Value.ToArray()) { Console.WriteLine($"Name: {stud.Name}, ZNO: {stud.Zno}"); } Console.WriteLine(); } Console.WriteLine("Free studets: "); int allFreeStud = 0; for (int p = 0; p < flags.Length; p++) { if (flags[p] == false) { allFreeStud++; Console.WriteLine($"Name: {enrollees[p].Name}, ZNO: {enrollees[p].Zno}"); } } Console.WriteLine($"Free studets count: {allFreeStud} "); }
static void PlayOptionTwo(Booger player) { Console.WriteLine("Would you like to battle against:\n1) 4 Queens\n2) 8 Queens\n3) 16 Queens\n"); byte userSelection = Convert.ToByte(Console.ReadLine()); byte heatherNumber = 2; switch (userSelection) { case 1: heatherNumber = 4; break; case 2: heatherNumber = 8; break; case 3: heatherNumber = 16; break; } Heather[] heathers = new Heather[heatherNumber]; Random rand = new Random(); for (int i = 0; i < heatherNumber - 1; i++) { Random rand2 = new Random(); string heatherName = DragNames.GetHeatherDragName(false, (byte)rand.Next(0, 45)); Speciality heatherSpecial = new Speciality(Heather.GenerateHeatherSpecial(heatherName)); heathers[i] = (new Heather(heatherName, rand2.Next(0, 21), rand2.Next(5, 21), rand2.Next(60, 201), rand2.Next(21, 40), heatherSpecial, rand2.Next(10, 31))); } Speciality ruSpecial = new Speciality(Heather.GenerateHeatherSpecial("RuPaul")); heathers[heatherNumber - 1] = (new Heather("RuPaul", rand.Next(0, 21), rand.Next(5, 21), rand.Next(60, 401), rand.Next(21, 40), ruSpecial, rand.Next(10, 31))); bool exit = false; int heatherCounter = 0; do { Song singleSong = new Song(Song.SelectASong()); if (heatherCounter != heatherNumber - 1) { Console.WriteLine($"You are up against {heathers[heatherCounter].Name}"); Console.WriteLine($"\nRuPaul: {player.Name}, {heathers[heatherCounter].Name}... I'm sorry my dears but you are both up for elimination"); Thread.Sleep(4000); Console.WriteLine($"\tEach of you has been asked to prepare a lip sync to \"{singleSong.Name}\" by {singleSong.Artist}"); Thread.Sleep(4000); Console.WriteLine("\tTwo queens stand before me, ladies this is your last chance to impress me and save yourself from elimination."); Thread.Sleep(4000); } else { Console.WriteLine("RuPaul: That is it, you are coming for my crown and I can't have it..."); Console.Write("You will now battle against the true Queen... Me! Now truly...."); } Console.Write("\tThe time has come for you to lipsync"); for (int j = 0; j < 3; j++) { Console.Write('.'); Thread.Sleep(900); } Console.Write("FOR"); Thread.Sleep(1000); Console.Write(" YOUR"); Thread.Sleep(1000); Console.WriteLine(" LIFE!"); Thread.Sleep(1000); //Lightning.LightningFlashes(); if (heatherCounter != heatherNumber - 1) { Console.Write("RuPaul: Good Luck"); Thread.Sleep(1000); Console.WriteLine(" and don't *&#! it up!"); Thread.Sleep(2000); } else { Console.WriteLine("RuPaul: Good Luck...."); Thread.Sleep(1000); Console.WriteLine("RuPaul Laughs"); Thread.Sleep(2000); } LipSync.RandomRules(player, heathers[heatherCounter], singleSong); Song.PlaySong(singleSong); bool exit2 = false; do { Console.WriteLine("\nPlease Choose and action:\nL) Lipsync for Your Life\nP) Player Info\nR) Rules\nO) Opponent Info\nX) Exit"); ConsoleKey userChoice = Console.ReadKey(true).Key; Console.Clear(); switch (userChoice) { case ConsoleKey.L: LipSync.ForYourLife(player, heathers[heatherCounter]); if (heathers[heatherCounter].Nerve <= 0) { Console.WriteLine("\n{0} You're a Winner Baby", player.Name); Console.WriteLine("\n{0} Now Sashay Away....\n", heathers[heatherCounter].Name); LipSync.Loot(player, heathers[heatherCounter], rand); exit2 = true; heatherCounter++; Console.WriteLine("You've defeated {0} Queen{1}", heatherCounter, heatherCounter == 0 ? "" : "s"); } else { LipSync.ForYourLife(heathers[heatherCounter], player); } break; case ConsoleKey.P: Console.WriteLine("Player Info"); Console.WriteLine(player); break; case ConsoleKey.O: Console.WriteLine("Opponent Info"); Console.WriteLine(heathers[heatherCounter]); break; case ConsoleKey.R: DisplayRules(); break; case ConsoleKey.X: case ConsoleKey.E: player.Nerve = 0; exit2 = true; exit = true; break; default: Console.WriteLine("Roxxy Andrews Made it Clear... That Was Not a Valid Selection..."); break; } if (player.Nerve <= 0) { Console.WriteLine("\n{0} You're a Winner Baby", heathers[heatherCounter].Name); Console.WriteLine("{0} Now Sashay Away....\n", player.Name); Console.WriteLine("You defeated {0} Queen{1}", heatherCounter, heatherCounter == 0 ? "" : "s"); exit2 = true; exit = true; } } while (!exit2); } while (!exit); }