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_PopulationAggregation
- {
- class PopulationAggregation
- {
- static void Main(string[] args)
- {
- var input = Console.ReadLine();
- var statePopulationDict = new Dictionary<string, List<TownPopulationInfo>>();
- var townPopulation = new Dictionary<string, long>();
- while (input != "stop")
- {
- var inputArr = input.Split(new[] { '\\' }, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).ToArray();
- if (inputArr.Length != 3)
- {
- input = Console.ReadLine();
- continue;
- }
- string cleanINputFirst = Regex.Replace(inputArr[0], "[^A-Za-z]", "");
- string cleanINputSecond = Regex.Replace(inputArr[1], "[^A-Za-z]", "");
- string state = string.Empty;
- string town = string.Empty;
- long polulation = long.Parse(inputArr[2]);
- if (char.IsUpper(cleanINputFirst[0]))
- {
- state = cleanINputFirst;
- town = cleanINputSecond;
- }
- else
- {
- state = cleanINputSecond;
- town = cleanINputFirst;
- }
- var temp = new TownPopulationInfo();
- temp.Town = town;
- temp.Population = polulation;
- if (!statePopulationDict.ContainsKey(state))
- {
- statePopulationDict.Add(state, new List<TownPopulationInfo>());
- }
- statePopulationDict[state].Add(temp);
- townPopulation[town] = polulation;
- input = Console.ReadLine();
- }
- var sortedDict = statePopulationDict
- .OrderBy(a => a.Key)
- .OrderByDescending(a => a.Value.Count)
- .ToArray();
- foreach (var state in statePopulationDict.OrderBy(a => a.Key))
- {
- Console.WriteLine($"{state.Key} -> {state.Value.Count}");
- }
- foreach (var town in townPopulation.OrderByDescending(x => x.Value).Take(3))
- {
- Console.WriteLine($"{town.Key} -> {town.Value}");
- }
- }
- class TownPopulationInfo
- {
- public string Town { get; set; }
- public long Population { get; set; }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement