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;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- namespace _04_RoliTheCoder
- {
- class RoliTheCoder
- {
- static void Main(string[] args)
- {
- var input = Console.ReadLine();
- var idEventName = new Dictionary<int, string>();
- var eventNameParticipants = new Dictionary<string, List<string>>();
- var regex = @"(?<id>\d+)\s+#(?<eventName>[\w\d]+)(\s+(?:@\w+\s*)+)?";
- var namePattern = @"@[a-zA-Z0-9'-]+";
- while (input != "Time for Code")
- {
- var matchedInput = Regex.Match(input, regex);
- if (matchedInput.Success)
- {
- var id = int.Parse(matchedInput.Groups["id"].Value);
- var eventName = matchedInput.Groups["eventName"].Value;
- var matchedNames = Regex.Matches(input, namePattern)
- .Cast<Match>()
- .Select(a => a.Value)
- .Where(a => a != "")
- .ToArray();
- if (!idEventName.ContainsKey(id))
- {
- idEventName[id] = string.Empty;
- idEventName[id] = eventName;
- eventNameParticipants[eventName] = new List<string>();
- }
- if (idEventName.ContainsKey(id) && !idEventName.ContainsValue(eventName))
- {
- input = Console.ReadLine();
- continue;
- }
- foreach (var name in matchedNames.Where(a => a != string.Empty))
- {
- eventNameParticipants[eventName].Add(name);
- }
- eventNameParticipants[eventName] = eventNameParticipants[eventName].Distinct().ToList();
- }
- input = Console.ReadLine();
- }
- foreach (var kvp in eventNameParticipants.OrderByDescending(p => p.Value.Count))
- {
- Console.WriteLine($"{kvp.Key} - {kvp.Value.Count}");
- foreach (var name in kvp.Value.OrderBy(n => n))
- {
- Console.WriteLine(name);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement