Задача 1 от конкурса на PC Magazine & Musala Soft

КОМПРЕСИЯ

Младият и амбициозен програмист Пиер си търси работа. В интернет намерил обява за работа в новосъздадената софтуерна фирма “Монблан Ложи” - компания с амбицията да намери своето достойно място на пазара за програмни продукти, особено в областта на модерните технологии. След проведеното интервю, на което Пиер се представил отлично, ръководството на фирмата решило да му постави и една задача за програмиране - интервюто си е интервю, а програмирането. . . програмиране.
Поставеният проблем е свързан с компресиране на растерни изображения, съдържащи десетични числа. Колкото по-голяма е компресията, толкова по-добре. Всяко число може да бъде изписано с произволен шрифт. Всяка негова цифра е изписана с черно на бял фон в растер с размери 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.

фиг.2

фиг.1

Входен файл на числото от фиг.2:
4
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000111000000110000000
00000000000001111000001110000000
00000000000011110000001110000000
00000000000111100000011100000000
00000000000111000000011100000000
00000000001110000000011000000000
00000000011100000000111000000000
00000000011100000000111000000000
00000000111000000001110000000000
00000001111000000001110000000000
00000001110000000001100000000000
00000011110000000011100000000000
00000011111111111111111110000000
00000011111111111111111110000000
00000001111111111111111110000000
00000000000000000111000000000000
00000000000000001110000000000000
00000000000000001110000000000000
00000000000000001110000000000000
00000000000000001110000000000000
00000000000000011100000000000000
00000000000000011100000000000000
00000000000000011100000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000

Входен файл на числото от фиг.1:
78 
00000000000000000000000000000000
00000000011111111111111100000000
00000000011111111111111100000000
00000000011111111111111100000000
00000000011111111111111100000000
00000000011111111111111100000000
00000000011111000001111100000000
00000000011111000001111100000000
00000000011111000001111100000000
00000000011111000001111100000000
00000000011111000001111100000000
00000000000000000001111100000000
00000000000000000001111100000000
00000000000000000001111100000000
00000000000000000001111100000000
00000000000000000001111100000000
00000000000000111110000000000000
00000000000000111110000000000000
00000000000000111110000000000000
00000000000000111110000000000000
00000000000000111110000000000000
00000000000000111110000000000000
00000000000000111110000000000000
00000000000000111110000000000000
00000000000000111110000000000000
00000000000000111110000000000000
00000000000000111110000000000000
00000000000000111110000000000000
00000000000000111110000000000000
00000000000000111110000000000000
00000000000000111110000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000111111111100000000000
00000000000111111111100000000000
00000000000111111111100000000000
00000000000111111111100000000000
00000000000111111111100000000000
00000011111000000000011111000000
00000011111000000000011111000000
00000011111000000000011111000000
00000011111000000000011111000000
00000011111000000000011111000000
00000000000111111111100000000000
00000000000111111111100000000000
00000000000111111111100000000000
00000000000111111111100000000000
00000000000111111111100000000000
00000011111000000000011111000000
00000011111000000000011111000000
00000011111000000000011111000000
00000011111000000000011111000000
00000011111000000000011111000000
00000011111000000000011111000000
00000011111000000000011111000000
00000011111000000000011111000000
00000011111000000000011111000000
00000011111000000000011111000000
00000000000111111111100000000000
00000000000111111111100000000000
00000000000111111111100000000000
00000000000111111111100000000000
00000000000111111111100000000000
00000000000000000000000000000000