Loading...
gondov avatar gondov 3 Точки

Programming Fundamentals Extended Retake Exam - 09 May 2017 Part II / 04. NSA

Здравейте това е моето решение на задачата, но начина по който намерих че се сортират речници ми е малко  сложен :) ако може някой да ми покаже алтернативa ,бих бил благодарен. Мерси! 

https://pastebin.com/zzTsRi9G

Тагове:
0
Fundamentals Module 01/07/2017 21:24:33
Boris.stavrev92 avatar Boris.stavrev92 42 Точки

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace _04.NSA
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string, Dictionary<string, int>> dataCenter = new Dictionary<string, Dictionary<string, int>>();

            string pattern = @"(?<countryName>[a-zA-Z0-9]+.?) -> (?<spyName>[a-zA-Z0-9]+.?) -> (?<daysInService>[\d]+.?)";
            string input = string.Empty;

            while ((input = Console.ReadLine()) != "quit")
            {
                if (Regex.IsMatch(input, pattern))
                {
                    Match infoToken = Regex.Match(input, pattern);

                    string countryName = infoToken.Groups["countryName"].Value;
                    string spyName = infoToken.Groups["spyName"].Value;
                    int daysInService = int.Parse(infoToken.Groups["daysInService"].Value);

                    if (!dataCenter.ContainsKey(countryName))
                    {
                        dataCenter[countryName] = new Dictionary<string, int>();
                    }

                    if (!dataCenter[countryName].ContainsKey(spyName))
                    {
                        dataCenter[countryName][spyName] = 0;
                    }

                    if (dataCenter[countryName].ContainsKey(spyName))
                    {
                        dataCenter[countryName][spyName] = daysInService;

                        // If even the spy exists, update its daysInService, with the new given value.
                        // тука няма да добавяме ако има ново въвеждане по име на съществуващ шпионин
                        // затова каквато стойност получи съществуващият шпиони ... предишната му стойност 
                        // ще се замени с новата 

                        // dataCenter[countryName][spyName] += daysInService; // е грешно 
                    }
                }
            }

            // Output:

            foreach (var data in dataCenter
                .OrderByDescending(x => x.Value.Count()))

                // ако има равен по - брой шпиони ... ще се нареди на принципа първи влезнал
                // няма да подреждаме по име на ключа

            {
                var country = data.Key;
                var spyNameAndCount = data.Value;

                Console.WriteLine($"Country: {country}");

                foreach (var spysAndCount in spyNameAndCount
                    .OrderByDescending(x => x.Value))

                    // ако имаме равен по - брой дни на шпиони нека пак е на принципа който пръв влезне 
                    // няма да ги подреждаме по име 

                {
                    var spyName = spysAndCount.Key;
                    var spyCount = spysAndCount.Value;

                    Console.WriteLine($"**{spyName} : {spyCount}");
                }
            }
            
        }
    }
}
 

0
30/12/2017 13:21:58
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.