Advertisement
Guest User

Untitled

a guest
Dec 14th, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.09 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, new List<KeyValuePair<string, long>>());
  47. }
  48. trainStats[masterTrain].Clear();
  49. trainStats[masterTrain].AddRange(trainStats[copiedTrain]);
  50. }
  51. else
  52. {
  53. string[] trainData = input.Split(new[] { " -> ", " : ", " = " }, StringSplitOptions.RemoveEmptyEntries);
  54. string masterTrain = trainData[0];
  55. string trainToDelete = trainData[1];
  56.  
  57. if (!trainStats.ContainsKey(masterTrain))
  58. {
  59. trainStats.Add(masterTrain, new List<KeyValuePair<string, long>>());
  60. }
  61. trainStats[masterTrain].AddRange(trainStats[trainToDelete]);
  62. trainStats.Remove(trainToDelete);
  63. }
  64. }
  65.  
  66. foreach (var train in trainStats.OrderByDescending(x => x.Value.Sum(y => y.Value)).ThenBy(x => x.Value.Count))
  67. {
  68. Console.WriteLine($"Train: {train.Key}");
  69. foreach (var wagon in train.Value.OrderByDescending(x => x.Value))
  70. {
  71. Console.WriteLine($"###{wagon.Key} - {wagon.Value}");
  72. }
  73. }
  74. }
  75. }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement