Професионална програма
Loading...
Iliyan_ts avatar Iliyan_ts 5 Точки

Exam Problems] C# Fundamentals - Задача {3} - Post Office

Здравейте, на въпросната задачка ми гърми 10-ти тест и не мога да си открия грешката. Моля за съдействие и да не ми се смеете много на Regex-a.

код - https://pastebin.com/HhvzaAeZ

условие - https://judge.softuni.bg/Contests/Practice/Index/1148#0

Благодаря.

Тагове:
0
Fundamentals Module
GeorgiPaunov avatar GeorgiPaunov 265 Точки
Best Answer

На пръв поглед не мога да видя някаква грешка, но все пак последният тест би трябвало да е най-краен случай. Ако искаш виж моето решение, което е доста по-кратко и използва доста повече от функционалностите на регексите:

https://pastebin.com/rknXRneQ

 

3
GeorgiPaunov avatar GeorgiPaunov 265 Точки

Пффф, след десет опита най-после разбрах къде е проблемът. Когато търсиш думите в третата част, итерираш първо по думите, а трябва да е по намерените букви, тъй като може думата на определена буква да е по-назад в третата част, а явно думите трябва да се вадят по реда на буквите, мачнати от първата част. Така че foreach-a долу го направих така:

for (int i = 1; i < firstWord.Length - 1; i++)
            {
                char letter = firstWord[i];
                int length = result[letter];

                foreach (string word in thirdPart)
                {
                    if (word.Length == length + 1 && word[0] == letter)
                    {
                        Console.WriteLine(word);
                    }
                }
            }

1
Iliyan_ts avatar Iliyan_ts 5 Точки

Мерси че ми показа как да си оптимизирам Regex-a, но грешката просто няма откриване наистина... 

0
Iliyan_ts avatar Iliyan_ts 5 Точки

Мерси много за отделеното време!!!

0
GeorgiPaunov avatar GeorgiPaunov 265 Точки

За нищо :)

0
radoslavbachurov avatar radoslavbachurov 1 Точки

Много добро и кратко решение ,но при вход като:

sdsGGasAOTPWEEEdas$AOTP$|a65:1.2s65:03d79:23ff79:01ds84:02! -80:07++ABs90:1.1|adsaArmyd Gara So La Arm Armyw21 Argo O OdaOfaasjfkrutoejfmryeem Or Ti Sar saTheww The Parahaos

какъвто не са дали в Judge ,но в условието има критерий за words length /between 1 – 20 charactes/ теста гърми.Трябва да има проверка за дължината на думата.Предполагам и условието не е мн коректно написано ,защото никъде няма критерий думите да са подредени по главните букви от първата част.

1
mariqnyordanov avatar mariqnyordanov 2 Точки

Здравей, Георги,

понеже срещнах трудности с тази задача, а твоето решение, е в пъти по изчистено и смислено от моето smiley, би ли обяснил третия регекс, и по специално защо има три чифта къдрави скоби за дължината?

$@"(?<=\s|^){startLetter}[^\s]{{{length}}}(?=\s|$)"

Благодаря ти предварително!

0