Loading...
iliyamar avatar iliyamar 13 Точки

04.Fix Emails от Dictionaries, Lambda and LINQ - Exercises case sensitieve

Имам два въпроса към задачата

1.В условието се казва, че  домейна е case insensitive, но когато го решавам по този начин вторият тест гърми, а когато чета нормално входа (без ToLower(), т.е Case sensitive) дава 100/100;

2. Как принципно е по-правилно според вас- още при четенето преди записа в dictionary да се филтрират UK US кодовете, или след като сме ги изчели в dictionary да ги изтрием преди печат (по скоро си мисля, че вторият подход е по-правилен). Практически входа и изхода, съответно резултата са едни и същи и по двата начина.

Тагове:
2
Programming Fundamentals
InaPanova avatar InaPanova 28 Точки

Прав си, колега. Аз пък при решаването изобщо не обърнах внимание на това и си нацъках кода без да използвам никъде toLower() - http://pastebin.com/55izD0wn 

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

0
RStanimirov avatar RStanimirov 10 Точки

Привет,

Опитах да го направй възможно най-кратко:

            var phoneBook = new Dictionary<string, string>();
            var name = Console.ReadLine();

            while (name != "stop")
            {
                var email = Console.ReadLine();

                if (email.EndsWith(".us") || email.EndsWith(".uk"))
                {
                    phoneBook.Remove(name);
                }
                else
                {
                    phoneBook[name] = email;
                }

                name = Console.ReadLine();
            }
            foreach (var item in phoneBook)
            {
                Console.WriteLine("{0} -> {1}", item.Key, item.Value);
            }

 

Judge says: 100/100.....

0
Stradjazz avatar Stradjazz 30 Точки

Реално погледнато, четейки текст и превръщайки го в ToLower, го правиш case sensitive, Защото тогава са валидни само малки букви, а аутпутът би трябвало да е същият като инпута. Case Insensitive означава да няма значение дали малки или големи букви. ;)

1
delian1914 avatar delian1914 99 Точки

Аз го направих така 

if (!email.Contains(".us")||email.Contains(".uk"))

ги добавям, което може да се окаже грешно ако има имейл pesho@gosh.uk.com ...

Все пак 100/100

Поздрави!

0
16/02/2018 15:19:27
Ekaterin avatar Ekaterin 133 Точки

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

namespace FixEmails
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string, string> emails = new Dictionary<string, string>();
            string name = Console.ReadLine();
            if (name == "stop")
            {
                return;
            }
            string emailAddress = Console.ReadLine();

            while (name != "stop")
            {
                emails[name] = emailAddress;
                if (emails[name].EndsWith("us") || emails[name].EndsWith("us"))
                {
                    emails.Remove(name);
                }
                name = Console.ReadLine();
                if (name == "stop")
                {
                    break;
                }
                emailAddress = Console.ReadLine();              
                
            }                     

            foreach (var item in emails)
            {
                Console.WriteLine(string.Join(" -> ",item.Key,item.Value));
            }
        }
    }
}
 

0
16/02/2018 17:08:01
Ekaterin avatar Ekaterin 133 Точки

Най вероятно е грешка в условието.

0
IvanBorisovG avatar IvanBorisovG 6 Точки

Ето вариант с Regex , минава 100/100 , но има case-ве които не match-ва.Явно няма такъв тест в judge... :)

https://pastebin.com/cMJEh13T

И още едно което май е по-коректно : https://pastebin.com/fCGwp75t

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