Advertisement
Guest User

Untitled

a guest
Dec 14th, 2017
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.33 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6. using System.Threading.Tasks;
  7.  
  8. namespace _04.Trainlands
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             string input = string.Empty;
  15.             Dictionary<string, List<KeyValuePair<string, long>>> trainStats = new Dictionary<string, List<KeyValuePair<string, long>>>();
  16.  
  17.  
  18.  
  19.             while ((input = Console.ReadLine()) != "It's Training Men!")
  20.             {
  21.  
  22.                 if (input.Contains(" : "))
  23.                 {
  24.                     string[] trainData = input.Split(new[] { " -> ", " : ", " = " }, StringSplitOptions.RemoveEmptyEntries);
  25.                     string trainName = trainData[0];
  26.                     string wagonName = trainData[1];
  27.                     long wagonPower = long.Parse(trainData[2]);
  28.  
  29.                     if (!trainStats.ContainsKey(trainName))
  30.                     {
  31.                         trainStats.Add(trainName, new List<KeyValuePair<string, long>>());
  32.                         trainStats[trainName].Add(new KeyValuePair<string, long>(wagonName, wagonPower));
  33.                     }
  34.                     else
  35.                     {
  36.                         trainStats[trainName].Add(new KeyValuePair<string, long>(wagonName, wagonPower));                        
  37.                     }
  38.                 }
  39.                 else if (input.Contains(" = "))
  40.                 {
  41.                     string[] trainData = input.Split(new[] { " -> ", " : ", " = " }, StringSplitOptions.RemoveEmptyEntries);
  42.                     string masterTrain = trainData[0];
  43.                     string copiedTrain = trainData[1];
  44.                     if (!trainStats.ContainsKey(masterTrain))
  45.                     {
  46.                         trainStats.Add(masterTrain, trainStats[copiedTrain]);
  47.                     }
  48.                     else
  49.                     {
  50.                         trainStats[masterTrain].Clear();
  51.                         trainStats[masterTrain].AddRange(trainStats[copiedTrain]);
  52.                     }
  53.                 }
  54.                 else
  55.                 {
  56.                     string[] trainData = input.Split(new[] { " -> ", " : ", " = " }, StringSplitOptions.RemoveEmptyEntries);
  57.                     string masterTrain = trainData[0];
  58.                     string trainToDelete = trainData[1];
  59.  
  60.                     if (!trainStats.ContainsKey(masterTrain))
  61.                     {
  62.                         trainStats.Add(masterTrain, trainStats[trainToDelete]);
  63.                         trainStats.Remove(trainToDelete);
  64.                     }
  65.                     else
  66.                     {
  67.                         trainStats[masterTrain].AddRange(trainStats[trainToDelete]);                        
  68.                         trainStats.Remove(trainToDelete);
  69.                     }
  70.                 }
  71.             }
  72.  
  73.             foreach (var train in trainStats.OrderByDescending(x => x.Value.Sum(y => y.Value)).ThenBy(x => x.Value.Count))
  74.             {
  75.                 Console.WriteLine($"Train: {train.Key}");
  76.                 foreach (var wagon in train.Value.OrderByDescending(x => x.Value))
  77.                 {
  78.                     Console.WriteLine($"###{wagon.Key} - {wagon.Value}");
  79.                 }    
  80.             }
  81.         }
  82.     }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement