Advertisement
MeliDragon

Untitled

May 4th, 2023
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace PokemonCatchThemAll
  7. {
  8. internal class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. LinkedList<Pokemon> pokemon = new LinkedList<Pokemon>();
  13. StringBuilder output = new StringBuilder();
  14.  
  15. string input;
  16.  
  17. while ((input = Console.ReadLine()) != "end")
  18. {
  19. var parameters = input.Split(' ');
  20.  
  21. string command = parameters[0];
  22.  
  23. if (command == "add")
  24. {
  25. string name = parameters[1];
  26. string type = parameters[2];
  27. int power = int.Parse(parameters[3]);
  28. int position = int.Parse(parameters[4]);
  29.  
  30. Pokemon newPokemon = new Pokemon(name, type, power);
  31.  
  32. if (position == 1)
  33. {
  34. pokemon.AddFirst(newPokemon);
  35. }
  36. else if (position == pokemon.Count + 1)
  37. {
  38. pokemon.AddLast(newPokemon);
  39. }
  40. else
  41. {
  42. if (position > pokemon.Count / 2)
  43. {
  44. var node = pokemon.Last;
  45. for (var i = pokemon.Count; i > position; i--)
  46. {
  47. node = node.Previous;
  48. }
  49. pokemon.AddBefore(node, newPokemon);
  50. }
  51. else
  52. {
  53. var node = pokemon.First;
  54. for (var i = 1; i < position; i++)
  55. {
  56. node = node.Next;
  57. }
  58. pokemon.AddBefore(node, newPokemon);
  59. }
  60.  
  61. }
  62.  
  63. output.AppendLine($"Added pokemon {name} to position {position}");
  64. }
  65. else if (command == "find")
  66. {
  67. string type = parameters[1];
  68. var findPokemon = pokemon.Where(x => x.Type == type).OrderBy(x => x.Name).ThenByDescending(x => x.Power).Take(5).Select(x => $"{x.Name}({x.Power})");
  69.  
  70. output.AppendLine($"Type {type}: {string.Join("; ", findPokemon)}");
  71. }
  72. else if(command == "ranklist")
  73. {
  74. int start = int.Parse(parameters[1]);
  75. int end = int.Parse(parameters[2]);
  76. var findRankOfPokemons = pokemon
  77. .Select((pokemons, index) => new { Pokemon = pokemons, Index = index + 1 })
  78. .Where(item => item.Index >= start && item.Index <= end)
  79. .OrderBy(item => item.Index)
  80. .Select(item => $"{item.Index}. {item.Pokemon.Name}({item.Pokemon.Power})");
  81.  
  82. output.AppendLine($"{string.Join("; ", findRankOfPokemons)}");
  83.  
  84. }
  85. }
  86.  
  87. Console.WriteLine(output);
  88.  
  89. }
  90.  
  91. public struct Pokemon
  92. {
  93. public Pokemon(string name, string type, int power)
  94. {
  95. this.Name = name;
  96. this.Type = type;
  97. this.Power = power;
  98. }
  99.  
  100. public string Name { get; set; }
  101. public string Type { get; set; }
  102. public int Power { get; set; }
  103. }
  104. }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement