Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.47 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace Trainlands
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             Dictionary<string, Dictionary<string, int>> train = new Dictionary<string, Dictionary<string, int>>();
  12.  
  13.             List<string> SplitedInput = new List<string>();
  14.             string Trainname = null;
  15.             string WagonName = null;
  16.             int WagonPower = 0;
  17.             string otherTrainName = null;
  18.             while (true)
  19.             {
  20.                 string input = Console.ReadLine();
  21.                 if (input == "It's Training Men!")
  22.                 {
  23.                     break;
  24.                 }
  25.                 //ADDING NEW TRAIN WITH WAGONS
  26.                 if (input.Contains(" -> ") && input.Contains(" : "))
  27.                 {
  28.                     SplitedInput = input.Split(" ->:=".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
  29.  
  30.                     for (int i = 0; i < SplitedInput.Count; i++)
  31.                     {
  32.                         SplitedInput[i] = SplitedInput[i].Trim();
  33.                     }
  34.                     Trainname = SplitedInput[0];
  35.                     WagonName = SplitedInput[SplitedInput.Count - 2];
  36.                     WagonPower = int.Parse(SplitedInput[SplitedInput.Count - 1]);
  37.  
  38.                     if (!train.ContainsKey(Trainname))
  39.                     {
  40.                         train.Add(Trainname, new Dictionary<string, int>());
  41.                     }
  42.                     if (!train[Trainname].ContainsKey(WagonName))
  43.                     {
  44.                         train[Trainname].Add(WagonName, 0);
  45.                     }
  46.                     train[Trainname][WagonName] = WagonPower;
  47.                 }
  48.  
  49.                 //REVERSING THE WAGONS OF THE KNOWN TRAIN TO THE NEW TRAIN
  50.                 if (input.Contains(" -> ") && !input.Contains(" : "))
  51.                 {
  52.                     SplitedInput = input.Split(" ->:=".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
  53.  
  54.                     for (int i = 0; i < SplitedInput.Count; i++)
  55.                     {
  56.                         SplitedInput[i] = SplitedInput[i].Trim();
  57.  
  58.                     }
  59.                     Trainname = SplitedInput[0];
  60.                     otherTrainName = SplitedInput[SplitedInput.Count - 1];
  61.  
  62.                     if (Trainname == otherTrainName)
  63.                     {
  64.                         continue;
  65.                     }
  66.                     if (!train.ContainsKey(Trainname))
  67.                     {
  68.                         train.Add(Trainname, new Dictionary<string, int>());
  69.                     }
  70.  
  71.  
  72.                     foreach (var item in train[otherTrainName])
  73.                     {
  74.  
  75.                         train[Trainname].Add(item.Key, item.Value);
  76.                     }
  77.  
  78.                     train.Remove(otherTrainName);
  79.  
  80.                 }
  81.  
  82.                 // COPYING THE WAGONS OF THE OTHER TRAIN
  83.                 if (input.Contains(" = "))
  84.                 {
  85.                     SplitedInput = input.Split(" =-:>=".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
  86.  
  87.                     for (int i = 0; i < SplitedInput.Count; i++)
  88.                     {
  89.                         SplitedInput[i] = SplitedInput[i].Trim();
  90.  
  91.                     }
  92.                     Trainname = SplitedInput[0];
  93.                     otherTrainName = SplitedInput[SplitedInput.Count - 1];
  94.  
  95.                     if (Trainname == otherTrainName)
  96.                     {
  97.                         continue;
  98.                     }
  99.  
  100.                     if (train.ContainsKey(Trainname))
  101.                     {
  102.                         train.Remove(Trainname);                    // <---- тук
  103.                     }
  104.                     train.Add(Trainname, new Dictionary<string, int>());  // и тук
  105.  
  106.                     foreach (var item in train[otherTrainName])
  107.                     {
  108.                         train[Trainname].Add(item.Key, item.Value);
  109.                     }
  110.  
  111.                 }
  112.             }
  113.  
  114.             foreach (var item in train.OrderByDescending(X => X.Value.Values.Sum()).ThenBy(e => e.Key.Count()))
  115.             {
  116.                 Console.WriteLine($"Train: {item.Key}");
  117.  
  118.                 foreach (var wagon in item.Value.OrderByDescending(k => k.Value))
  119.                 {
  120.                     Console.WriteLine($"###{wagon.Key} - {wagon.Value}");
  121.                 }
  122.             }
  123.         }
  124.     }
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement