Advertisement
Guest User

Dragon Army

a guest
Feb 18th, 2018
1,197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace ConsoleApp1
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. int n = int.Parse(Console.ReadLine());
  12. List<Dragon> dragons = new List<Dragon>();
  13.  
  14. for (int i = 0; i < n; i++)
  15. {
  16. string[] parameters = Console.ReadLine().Split(' ');
  17. double value = 0;
  18.  
  19. Dragon dragon = new Dragon()
  20. {
  21. Type = parameters[0],
  22. Name = parameters[1],
  23. Damage = double.TryParse(parameters[2], out value) ? value : 45,
  24. Health = double.TryParse(parameters[3], out value) ? value : 250,
  25. Armour = double.TryParse(parameters[4], out value) ? value : 10,
  26. };
  27.  
  28. Dragon existingDragon = dragons.SingleOrDefault(d => d.Name == dragon.Name && d.Type == dragon.Type);
  29. if (existingDragon != null)
  30. {
  31. existingDragon.Damage = dragon.Damage;
  32. existingDragon.Health = dragon.Health;
  33. existingDragon.Armour = dragon.Armour;
  34. }
  35. else
  36. {
  37. dragons.Add(dragon);
  38. }
  39. }
  40.  
  41. var groupedDragons = dragons.GroupBy(
  42. d => d.Type,
  43. d => d,
  44. (key, d) =>
  45. new GroupedDragon()
  46. {
  47. Type = key,
  48. Dragons = d.ToList()
  49. });
  50.  
  51. foreach (GroupedDragon groupedDragon in groupedDragons)
  52. {
  53. int dragonCount = groupedDragon.Dragons.Count;
  54. double damage = groupedDragon.Dragons.Sum(d => d.Damage) / dragonCount;
  55. double health = groupedDragon.Dragons.Sum(d => d.Health) / dragonCount;
  56. double armour = groupedDragon.Dragons.Sum(d => d.Armour) / dragonCount;
  57.  
  58. Console.WriteLine($"{groupedDragon.Type}::({damage:F2}/{health:F2}/{armour:F2})");
  59.  
  60. foreach (Dragon dragon in groupedDragon.Dragons.OrderBy(d => d.Name))
  61. {
  62. Console.WriteLine($"-{dragon.Name} -> damage: {dragon.Damage}, health: {dragon.Health}, armor: {dragon.Armour}");
  63. }
  64. }
  65. }
  66. }
  67.  
  68. class Dragon
  69. {
  70. public string Type { get; set; }
  71. public string Name { get; set; }
  72. public double Damage { get; set; }
  73. public double Health { get; set; }
  74. public double Armour { get; set; }
  75. }
  76.  
  77. class GroupedDragon
  78. {
  79. public string Type { get; set; }
  80. public List<Dragon> Dragons { get; set; }
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement