elena1234

Race*-howToTakeTheFirstThreeElementsFromDictionary

Nov 20th, 2020 (edited)
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.04 KB | None | 0 0
  1. using System;
  2. using System.Text.RegularExpressions;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5.  
  6. namespace text
  7. {
  8.     class MainClass
  9.     {
  10.         public static void Main(string[] args)
  11.         {
  12.             var listOfRacers = Console.ReadLine().Split(", ",StringSplitOptions.RemoveEmptyEntries).ToList();
  13.             var dictionaryRacersDistance = new Dictionary<string, int>();
  14.             var regex = new Regex(@"[^_|\W]");
  15.  
  16.             string input = string.Empty;
  17.             while ((input = Console.ReadLine()) != "end of race")
  18.             {
  19.                 var matches = regex.Matches(input);
  20.                 if (regex.IsMatch(input))
  21.                 {
  22.                     string racerName = string.Empty;
  23.                     int sumDistance = 0;
  24.                     foreach (Match item in matches)
  25.                     {
  26.                         if (int.TryParse(item.ToString(), out int digit))
  27.                         {
  28.                             sumDistance += digit;
  29.                         }
  30.  
  31.                         else
  32.                         {
  33.                             racerName += item.ToString();
  34.                         }
  35.                     }
  36.  
  37.                     if (listOfRacers.Contains(racerName))
  38.                     {
  39.                         if (dictionaryRacersDistance.ContainsKey(racerName) == false)
  40.                         {
  41.                             dictionaryRacersDistance.Add(racerName, sumDistance);
  42.                         }
  43.  
  44.                         else
  45.                         {
  46.                             dictionaryRacersDistance[racerName] += sumDistance;
  47.                         }
  48.                     }
  49.                 }
  50.             }
  51.  
  52.             var sortedList = dictionaryRacersDistance.OrderByDescending(x => x.Value).Select(x => x.Key).Take(3).ToList();
  53.             Console.WriteLine("1st place: " + sortedList[0]);
  54.             Console.WriteLine("2nd place: " + sortedList[1]);
  55.             Console.WriteLine("3rd place: " + sortedList[2]);
  56.         }
  57.        }
  58.     }
Add Comment
Please, Sign In to add comment