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
gondov avatar gondov 3 Точки

Благодаря!!! :)

0
andy94 avatar andy94 58 Точки

Здравейте можели малко помощ и аз относно сортирането на листове... нещо немога да го наглася с ламбда---- https://pastebin.com/zQDxrYa3

0
gondov avatar gondov 3 Точки

Първо не ти трябва лист за да пазиш всички дни а само при последното появяване, както се оказава, не трябва и да ги прибавяш ...такова е условието тва е.

Второ трябва да ползваш ОrderByDesCending(x=>x......) за подреждането на държавите по броя на шпионите после за шпионите по дни служба за тва можеш да видиш и аз как съм го направилмалко по различно е : https://pastebin.com/zzTsRi9G 

иначе това е твоя код: https://pastebin.com/f1bzizhM 

A ако искаш да влезнеш в листа на твоето решение трябва да изглежда нещо такова:  data[country][agent][score] -влизаш в речника после държавата после в агента после в листа на дадена позиция и трябва да ти даде броя дни на тази позиция(но не това се иска в задачата).

Надявам се да съм бил полезен!  Успех :)

 

0
23/07/2017 20:34:08
andy94 avatar andy94 58 Точки

Мерси !

0
SliviIKaisii avatar SliviIKaisii 2 Точки

Аз съм много просто парче, ако ме видите някъде ми се посмейте, понеже така и не пораснах за толкова години.

0
23/07/2017 21:31:45
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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.