Militsa

03. CODE: Phoenix Oscar Romeo November

Dec 8th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.98 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace Phoenix_Oscar_Romeo_November
  6. {
  7.     public class PhoenixOscarRomeoNovember
  8.     {
  9.         public static void Main()
  10.         {
  11.             List<Creature> creatures = new List<Creature>();
  12.  
  13.             string line = Console.ReadLine();
  14.             while (line != "Blaze it!")
  15.             {
  16.                 var tokens = line.Split(new char[] { '-', '>', ' ' }, StringSplitOptions.RemoveEmptyEntries).ToArray();
  17.  
  18.                 string creatureName = tokens[0];
  19.                 string squadMateName = tokens[1];
  20.  
  21.                 var squadMate = new SquadMate();
  22.                 squadMate.MateName = squadMateName;
  23.  
  24.                 if (!creatures.Any(x => x.CreatureName == creatureName))
  25.                 {
  26.                     var creature = new Creature();
  27.                     creature.CreatureName = creatureName;
  28.                     creature.SquadMates = new List<SquadMate>();
  29.                     creature.SquadMates.Add(squadMate);
  30.                     creatures.Add(creature);
  31.  
  32.                     line = Console.ReadLine();
  33.                     continue;
  34.                 }
  35.  
  36.                 if (creatures.Any(x => x.CreatureName == creatureName))
  37.                 {
  38.                     var existingCreature = creatures.First(x => x.CreatureName == creatureName);
  39.                     var existingSquadMates = existingCreature.SquadMates;
  40.  
  41.                     if (!existingSquadMates.Any(x => x.MateName == squadMateName))
  42.                     {
  43.                         existingSquadMates.Add(squadMate);
  44.                     }
  45.  
  46.                     line = Console.ReadLine();
  47.                     continue;
  48.                 }
  49.             }
  50.  
  51.             foreach (var creature in creatures)
  52.             {
  53.                 string name = creature.CreatureName;
  54.                 var squadMates = creature.SquadMates;
  55.                 foreach (var cr in creatures)
  56.                 {
  57.                     string nextCreatureName = cr.CreatureName;
  58.                     var nextSquadMates = cr.SquadMates;
  59.                     if (squadMates.Any(x => x.MateName == nextCreatureName) && nextSquadMates.Any(x => x.MateName == name))
  60.                     {
  61.                         squadMates.RemoveAll(x => x.MateName == nextCreatureName);
  62.                         nextSquadMates.RemoveAll(x => x.MateName == name);
  63.                     }
  64.                 }
  65.             }
  66.  
  67.             foreach (var creature in creatures.OrderByDescending(x => x.SquadMates.Count))
  68.             {
  69.                 string name = creature.CreatureName;
  70.                 int cnt = creature.SquadMates.Count;
  71.                 Console.WriteLine("{0} : {1}", name, cnt);
  72.             }
  73.         }
  74.     }
  75.  
  76.     public class Creature
  77.     {
  78.         public string CreatureName { get; set; }
  79.  
  80.         public List<SquadMate> SquadMates { get; set; }
  81.     }
  82.  
  83.     public class SquadMate
  84.     {
  85.         public string MateName { get; set; }
  86.     }
  87. }
Add Comment
Please, Sign In to add comment