Advertisement
valkata

Trainlands

Aug 20th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.41 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace _04_trainlands
  8. {
  9.     class Wagon
  10.     {
  11.         public string WagonName { get; set; }
  12.         public int WagonPower { get; set; }
  13.  
  14.         public Wagon(string name, int power)
  15.         {
  16.             WagonName = name;
  17.             WagonPower = power;
  18.         }
  19.     }
  20.     class trainlands
  21.     {
  22.         static void Main(string[] args)
  23.         {
  24.             Dictionary<string, List<Wagon>> trains = new Dictionary<string, List<Wagon>>();
  25.  
  26.             string input = Console.ReadLine();
  27.             string trainName = "";
  28.             while (input  != "It's Training Men!")
  29.             {
  30.                 string[] inputTokkens = input.Split().ToArray();
  31.                 if (inputTokkens.Length > 3)
  32.                 {
  33.                     trainName = inputTokkens[0];
  34.                     string wagonName = inputTokkens[2];
  35.                     int wagonPower = int.Parse(inputTokkens[4]);
  36.                     if (!trains.ContainsKey(trainName))
  37.                     {
  38.                         trains.Add(trainName, new List<Wagon>());
  39.                         trains[trainName].Add(new Wagon(wagonName, wagonPower));
  40.                     }
  41.                     else
  42.                     {
  43.                         trains[trainName].Add(new Wagon(wagonName, wagonPower));
  44.                     }
  45.                 }
  46.                 else if (inputTokkens[1] == "->" && inputTokkens.Length == 3)
  47.                 {
  48.                     trainName = inputTokkens[0];
  49.                     string otherTrainName = inputTokkens[2];
  50.                     if (!trains.ContainsKey(trainName))
  51.                     {
  52.                         trains.Add(trainName, new List<Wagon>());
  53.                         trains[trainName].AddRange(trains[otherTrainName]);
  54.                         trains.Remove(otherTrainName);
  55.                     }
  56.                     else
  57.                     {
  58.                         trains[trainName].AddRange(trains[otherTrainName]);
  59.                         trains.Remove(otherTrainName);
  60.                     }
  61.                 }
  62.                 else if (inputTokkens[1] == "=" && inputTokkens.Length == 3)
  63.                 {
  64.                     trainName = inputTokkens[0];
  65.                     string otherTrainName = inputTokkens[2];
  66.                     if (!trains.ContainsKey(trainName))
  67.                     {
  68.                         trains.Add(trainName, new List<Wagon>());
  69.                         trains[trainName].AddRange(trains[otherTrainName]);
  70.                     }
  71.                     else
  72.                     {
  73.                         trains[trainName].Clear();
  74.                         trains[trainName].AddRange(trains[otherTrainName]);
  75.                     }
  76.                 }
  77.                 input = Console.ReadLine();
  78.             }
  79.             var orderedTrains = trains
  80.                 .OrderByDescending(t => t.Value.Sum(x => x.WagonPower))
  81.                 .ThenBy(t => t.Value.Count);
  82.            
  83.             foreach (var train in orderedTrains)
  84.             {
  85.                 Console.WriteLine("Train: {0}", train.Key);
  86.  
  87.                 foreach (var wagon in train.Value.OrderByDescending(t => t.WagonPower))
  88.                 {
  89.                     Console.WriteLine("###{0} - {1}",wagon.WagonName, wagon.WagonPower);
  90.                 }
  91.             }
  92.         }
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement