Професионална програма
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 4 Точки

Привет,

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

            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