Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Text;
- namespace PlayerRankList
- {
- class Program
- {
- public static StringBuilder resultMessages = new StringBuilder();
- public static List<Player> rankList = new List<Player>();
- public static Dictionary<string, SortedSet<Player>> playersByType = new Dictionary<string, SortedSet<Player>>();
- static void Main(string[] args)
- {
- var line = Console.ReadLine();
- while (line != "end")
- {
- var command = line.Split(' ').ToArray();
- switch (command[0])
- {
- case "add":
- AddPlayer(command);
- break;
- case "find":
- Find(command[1]);
- break;
- case "ranklist":
- RankPlayers(int.Parse(command[1]), int.Parse(command[2]));
- break;
- }
- line = Console.ReadLine();
- }
- Console.WriteLine(resultMessages.ToString().Trim());
- }
- public static void AddPlayer(string[] command)
- {
- var player = new Player(command[1], command[2], int.Parse(command[3]), int.Parse(command[4]));
- if (!playersByType.ContainsKey(player.Type))
- {
- playersByType[player.Type] = new SortedSet<Player>();
- }
- playersByType[player.Type].Add(player);
- rankList.Insert(player.Position - 1, player);
- var msg = string.Format("Added player {0} to position {1}", player.Name, player.Position);
- resultMessages.AppendLine(msg);
- }
- public static void Find(string type)
- {
- var playersWithTheCurrentType = playersByType[type].Take(5);
- var msg = string.Format("Type {0}: {1}", type, string.Join("; ", playersWithTheCurrentType));
- resultMessages.AppendLine(msg);
- }
- public static void RankPlayers(int start, int end)
- {
- var rankedPlayers = new Player[end];
- for (int i = start - 1; i <= end - 1; i++)
- {
- rankedPlayers[i] = rankList[i];
- }
- var org = rankedPlayers.Select(r => new { Position = ++start - 1, Player = r }).ToArray();
- resultMessages.AppendLine(string.Join("; ", org.Select(r => string.Format("{0}. {1}", r.Position, r.Player ))));
- }
- }
- public class Player : IComparable<Player>
- {
- public Player(string name, string type, int age, int position)
- {
- this.Name = name;
- this.Age = age;
- this.Type = type;
- this.Position = position;
- }
- public string Name { get; set; }
- public int Age { get; set; }
- public string Type { get; set; }
- public int Position { get; set; }
- public int CompareTo(Player other)
- {
- var result = this.Name.CompareTo(other.Name);
- if (result == 0)
- {
- result = this.Age.CompareTo(other.Age) * -1;
- }
- return result;
- }
- public override string ToString()
- {
- return string.Format("{0}({1})", this.Name, this.Age);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement