Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace B
- {
- public class Program
- {
- static void Main()
- {
- Dictionary<string, SortedSet<Pokemon>> pokemonTypes = new Dictionary<string, SortedSet<Pokemon>>();
- // има нужда от 2 листа - 1 с всички покемони и един само с позициите
- List<Pokemon> allPokemons = new List<Pokemon>();
- List<int> positions = new List<int>();
- var sb = new StringBuilder();
- var input = "";
- while (input != "end")
- {
- input = Console.ReadLine();
- string[] inputTokens = input.Split();
- string commandType = inputTokens[0];
- if (commandType == "add")
- {
- string name = inputTokens[1];
- string type = inputTokens[2];
- int power = int.Parse(inputTokens[3]);
- int position = int.Parse(inputTokens[4]);
- var pokemon = new Pokemon(name, type, power);
- // намаляме позицията с 1 преди да я insert-нем в листа с позиции,
- // защото позициите са 1,2,3, а листът е 0-based
- positions.Insert(position - 1, allPokemons.Count);
- allPokemons.Add(pokemon);
- // нямаш нужда от това
- //if (position < allPokemons.Count)
- //{
- // allPokemons.Insert(position - 1, pokemon);
- //}
- //else
- //{
- // allPokemons.Add(pokemon);
- //}
- // TODO: Optimize this
- if (!pokemonTypes.ContainsKey(type))
- {
- pokemonTypes[type] = new SortedSet<Pokemon>();
- }
- pokemonTypes[type].Add(pokemon);
- //result = $"Added pokemon {name} to position {position}";
- sb.AppendLine($"Added pokemon {name} to position {position}");
- }
- else if (commandType == "find")
- {
- string type = inputTokens[1];
- sb.Append($"Type {type}: ");
- if (pokemonTypes.ContainsKey(type))
- {
- //var pokemonsByType = pokemons[type].Take(5)
- //.Select(x => $"{x.Name}({x.Power})")
- //.ToList();
- sb.Append(string.Join("; ", pokemonTypes[type].Take(5).ToList()));
- }
- sb.AppendLine();
- //result = pokemonsByType.Count == 0 ? $"Type {typeToFind}: " : $"Type {typeToFind}: {string.Join("; ", pokemonsByType)}";
- }
- else if (commandType == "ranklist")
- {
- // К
- var start = int.Parse(inputTokens[1]);
- var end = int.Parse(inputTokens[2]);
- for (int i = start - 1; i < end; i++)
- {
- sb.Append($"{i + 1}. {allPokemons[positions[i]]}; ");
- }
- sb.Remove(sb.Length - 2, 2);
- sb.AppendLine();
- // Б
- //int start = int.Parse(inputTokens[1]);
- //int end = int.Parse(inputTokens[2]);
- //StringBuilder sbPrintPositions = new StringBuilder();
- //int counter = start;
- //for (int i = start - 1; i <= end - 1; i++)
- //{
- // sbPrintPositions.Append($"{counter}. {pokemonsByPositions[i].Name}({pokemonsByPositions[i].Power}); ");
- // counter++;
- //}
- //result = sbPrintPositions.ToString().TrimEnd(';', ' ');
- }
- //sb.AppendLine(result);
- }
- Console.WriteLine(sb.ToString());
- }
- }
- class Pokemon : IComparable<Pokemon>
- {
- public Pokemon(string name, string type, int power)
- {
- this.Name = name;
- this.Type = type;
- this.Power = power;
- }
- public string Name { get; set; }
- public string Type { get; set; }
- public int Power { get; set; }
- public int CompareTo(Pokemon other)
- {
- if (other == null)
- return -1;
- int comparison = this.Name.CompareTo(other.Name);
- if (comparison == 0)
- {
- comparison = this.Power.CompareTo(other.Power);
- comparison *= -1; // Descending order
- }
- return comparison;
- }
- public override string ToString()
- {
- return $"{this.Name}({this.Power})";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement