XIII конкурс по програмиране на PC Magazine Bulgaria и Мусала Софт
PCMagazine, Брой 2

В този брой на сп. PC Magazine Bulgaria стартира петият кръг от тринадесетото издание на най-елитния частен конкурс по програмиране в страната, организиран съвместно от списанието и фирма Мусала Софт. Тази година за пореден път Майкрософт България подкрепя един от кръговете на конкурса. Освен в осигуряването на наградите Майкрософт участва в изготвянето на задачата.
„За шеста поредна година Майкрософт подкрепя организирането на този конкурс. Вярваме, че той наистина привлича талантите на България в областта на програмирането. За нас е важно да достигнем до тях и да им дадем възможност да изразят потенциала си. Само през последната, 2007 година 12 млади професионалисти са се присъединили към екипа на Майкрософт България. Ние изцяло разчитаме на ентусиазма и таланта им и насърчаваме креативността им в решаването на предизвикателствата, с които се срещат в ежедневната си работа“ - каза Георги Бучков, Майкрософт България.
Майкрософт България осигурява следните награди: класиралият се на първо място ще получи преносим компютър с Windows Vista, на второ място - мишка Microsoft Wireless Laser Mouse 8000, а на трето - клавиатура Microsoft Digital Media Pro Keyboard.
Учредена през 1975 г., компанията Майкрософт е световен лидер в областта на софтуера, услугите и интернет технологиите за компютърно управление на бизнеса. Фирмата предлага широк спектър от продукти и услуги за бизнес- и частни потребители, като всеки продукт е създаден, за да даде сила на потребителя навсякъде, по всяко време и на всякакъв вид устройства. През юли 1999 г. Майкрософт откри свой офис в България.
Чат
Ето че дойде рожденият ден на Мечо Пух. Приятелите му решиха да му направят специален подарък за кръглата годишнина – Мечо ставаше на 16. След дълги спорове и обикаляне из Голямата Гора избраха да изненадат рожденика с нов лаптоп.
Мечо, разбира се, много се зарадва и още на следващия ден реши да изпробва пълния капацитет на машината, като почати. В мрежата той откри своите приятели, които побързаха да го питат какво мисли за подаръка:
kaji pyrvite 3 dumi, s koito bi go opisal! ne, ne! kaji napravo pyrvite N dumi, s koito bi go opisal!
За съжаление Пух още не може да пише много бързо, а лаптопът е революционен и изключително стилен модел и клавиатурата му има само малки и големи латински букви и клавишите ‘-‘, ‘+’ и ‘=’, които заместват съответно backspace, delete и enter. С ‘-‘ (backspace) се изтрива последната въведена буква, а с ‘+’ (delete) – първата въведена буква. Бутонът ‘=’ (enter) изпраща въведения до момента текст, но не го изтрива. Например комбинацията „tra=lala=+-=“ ще изведе думите „tra“, „tralala“, „ralal“. Натискането на ‘-‘ или ‘+’, когато няма въведен текст, забива компютъра и ще се счита за невалидно по време на тестване.
След купона за рождения ден са останали десетки неизядени порции мед, над които Мечо желае да се концентрира. Затова той иска да нареди N-те думи, които е намислил да каже така, че общият брой натиснати клавиши да е колкото се може по-малък. Може да се възползва и от революционната екстра – СуперМакро, която вече беше конфигурирал. Тя позволява на потребителите да изберат няколко главни букви, които автоматично да се заменят с някакъв по-дълъг текст от малки латински букви и специални знаци (например по подразбиране „C“ се заменя автоматично със „see“, а „B“ се заменя с „nasledva shtiqredshteimab=a-b=“).
Интерфейс
За щастие .NET е изключително гъвкава платформа и е съвместима дори с тези редки модели компютри. Вашата задача е да напишете .NET приложение, което да се свързва с Web Service и да използва предоставения интерфейс, за да диктува на Мечо кои клавиши да натиска. Като входни данни ще получите N (1<1000) различни думи, които героят е намислил (съдържащи не по-малко от 1 и не повече от 10000 знака), както и M макроса, за всеки от които ще знаете, че заменя някоя главна латинска буква с даден низ от малки латински букви или специални знаци (‘+’, ‘-‘ или ‘=‘). Повече информация за интерфейса и инструкции можете да намерите на http://konkurs.musala.com/.
Пример
Нека Мечо е намислил да каже следните думи: „super“, „krasiv“, „kralski“, „perfekten“ и разполага със следните макроси: S->„super“; G->„siv=“. Тогава една възможна комбинация, която изписва тези думи, е „kralski=----G------ S=++fekten=“.
Оценяване
Всяка дума, която Мечо е намислил, трябва да бъде изпратена точно веднъж на отделен ред. При невалиден изход на някой тест или когато програмата не успее да завърши за 10 секунди, съответният участник получава нула точки. Измежду всички валидни отговори най-много точки ще получат най-кратките. На останалите участници ще бъдат присъдени точки обратнопропорционално на дължината на изхода.
Решенията на задачата може да изпратите чрез системата за upload директно на сайта http://konkurs.musala.com до 11 март 2008 г.