Loading...
nickwork avatar nickwork 657 Точки
Best Answer

Привет, доста ти разбърках кода...сори за което..вече дава 100/100

 

using System;
using System.Collections.Generic;
using System.Linq;

namespace _01_Dictionary
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string, List<string>> words = new Dictionary<string, List<string>>();

            string command = Console.ReadLine();

            string[] commandArr = command.Split(" | ");

            for (int j = 0; j < commandArr.Length; j++)
            {
                string[] resultArr = commandArr[j].Split(": ");

                if (!(words.ContainsKey(resultArr[0])))
                {
                    words.Add(resultArr[0], new List<string>());
                }
                words[resultArr[0]].Add(resultArr[1]);
            }


            string[] checkArr1 = Console.ReadLine().Split(" | ");

            for (int i = 0; i < checkArr1.Length; i++)
            {
                string currentWord = checkArr1[i];

                if(words.ContainsKey(currentWord))
                {
                    foreach (var word in words.OrderBy(x => x.Key).Where(x=>x.Key == currentWord))
                    {
                        Console.WriteLine($"{word.Key}");

                        foreach (var item in word.Value.OrderByDescending(x => x.Length))
                        {
                            Console.WriteLine($" -{item}");
                        }
                    }
                }
            }

            string checkArr = Console.ReadLine();

            //foreach (var name in words.Keys.OrderBy(k => k))
            //{
            //    string result = checkArr[count];
            //    count++;
            //    if (words.ContainsKey(result))
            //    {
            //        Console.WriteLine($"{name}");
            //        foreach (var item in words[name].OrderByDescending(x => x.Length))
            //        {

            //            Console.WriteLine($" -{item}");

            //        }
            //    }
            //}

            if (checkArr == "List")
            {
                string[] orderedDict = words.OrderBy(x => x.Key).Select(x => x.Key).ToArray();

                Console.WriteLine(string.Join(" ", orderedDict));
            }
        }
    }
}

1
Milko123 avatar Milko123 14 Точки

Благодаря, за мен всяка една нова идея е от полза.

1
Milko123 avatar Milko123 14 Точки

В реда  foreach (var word in words.OrderBy(x => x.Key).Where(x=>x.Key == currentWord)) забелязах, че минава със 100 и без .Where(x=>x.Key == currentWord). След като по-горе е написано if(words.ContainsKey(currentWord)) какъв смисъл придава това условие?

0
nickwork avatar nickwork 657 Точки

Where(x=>x) връща колекция отговаряща на дадено условие (даже в този случай като се замисля е по правилно да се използва FirstOrDefault()), аз съм го използвал защото ako currentWord =  "Pesho", а първият ми елемент(ключ ) в речника е "Ivan" във foreach цикъла няма да ми се отпечатат данните на "Pesho", ами тези на "Ivan". По условието си помислих, че искат да се  отпечатат данните за елементите които ни подават в реда по който са дадени (самото условие на задачата е малко завъртяно и неясно), така , че реших така да го направя за по сигурно....видях, че ми дава 100/100 и повече не съм мислил други варианти...друг път не съм я решавал тази задача...Иначе ако и без този Where дава 100/100 здраве да е :) , просто запомни как се използва и какво прави защото 100% ще ти трябва доста често да го използваш и за в бъдеще :)

0
Milko123 avatar Milko123 14 Точки

Благодаря!

0
JulianJulianov avatar JulianJulianov 9 Точки

Здравей! Пробвах без Where() и резултата е 90/100. А смисъла да се ползва в този случай е, че при форийчването ще има многократни повтарящи се изходи на ключове(Key) и стойности(Value) . Демек избира само един ключ(дума) от речника ,обработва го и форийчването приключва. https://pastebin.com/9Y6AAWd1

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