Задача 1<br> КОМПРЕСИЯ
Категория: Интернет
неделя, 10 Февруари 2002 0:00ч
Младият и амбициозен програмист Пиер си търси работа. В Internet намерил обява за работа в новосъздадената софтуерна фирма "Монблан Ложи" - компания с амбицията да намери своето достойно място на пазара за програмни продукти, особено в областта на модерните технологии. След проведеното интервю, на което Пиер се представил отлично, ръководството на фирмата решило да му постави и една задача за програмиране - интервюто си е интервю, а програмирането. . . програмиране.
Поставеният проблем е свързан с компресиране на растерни изображения, съдържащи десетични числа. Колкото по-голяма е компресията, толкова по-добре. Всяко число може да бъде изписано с произволен шрифт. Всяка негова цифра е изписана с черно на бял фон в растер с размери 32x32 пиксела. Пиер трябва да напише програма CODE.EXE, която компресира изображението на едно число, и програма DECODE.EXE, която разкомпресира компресирано с CODE.EXE изображение. Полученото след разкомпресиране изображение на всяка цифра не трябва да се различава от началния си вид в повече от 16 пиксела.
Файлът NUM.INP съдържа на първия си ред едно N-цифрено десетично число (1І NІ 1000). Следващите N*32 реда съдържат последователно описанието на растерното изображение на всяка от N-те цифри на даденото число. Всеки от тези редове съдържа 32 символа - 0 (бяло) или 1(черно). Компресиращата програма чете файла NUM.INP и създава файл с име NUM.COD, който трябва да съдържа компресираното изображение на числото. Разкомпресиращата програма трябва да чете файла NUM.COD, създаден от компресиращата програма, и да създава файл с име NUM.OUT, който съдържа N*32 реда - аналогично на входния файл (без първия ред, на който е зададено числото).
Пиер се справил отлично, а вие?
Всеки тест е правилно решен, ако растерните изображения на всяка от цифрите в NUM.INP и NUM.OUT не се различават в повече от 16 пиксела, както беше споменато. За всеки тестов пример при оценяването на верните решения се взема предвид големината на NUM.COD. Състезателят, чийто файл е най-малък, ще получи максималния възможен брой точки за теста. Всеки друг състезател ще получи част от максималния брой, в зависимост от големината на NUM.COD.
На фиг.1 можете да видите растерното изображение на числото 78, изписано с един възможен шрифт, а на фиг.2 - на числото 4 с друг възможен шрифт. За всяка фигура е даден съответният входен файл NUM.INP.
Очакваме решенията на задача 1 не по-късно от 20 ноември 2002 г. на адрес konkurs@sagabg.net или konkurs@musala.com.
На www.konkurs.musala.com и www.pcmagbg.net ще публикуваме съдържанието на задачите от текущия кръг 20 дни преди крайния срок за изпращане на решението, както и всички промени, актуализации, резултати и временното класиране. Там можете да намерите и правилата за участие в нашия конкурс.

