Главная > Буквоед
1994

Во входном файле содержится закодированное изображение электронного табло, состоящего из 25 строк и 80 столбцов лампочек. Известно, что на табло высвечивалась одна или несколько заглавных печатных букв: А, В, Ж, Л, М, О, С, Ф, Ю. Символы, отличные от перечисленных букв, на табло отсутствовали.

Две горящие лампочки, соседствующие на табло по горизонтали, вертикали или диагонали, принадлежат одной и той же букве. Буквы могут быть любого размера, толщины, начертания ("рукописные" буквы не допустимы). Буквы расположены вертикально. Изображения букв не касаются и не пересекаются. "Линии", образующие буквы, не имеют разрывов и полостей.


Задание

Написать программу, которая

  1. запрашивает имя входного файла и выводит на экран монитора в текстовом режиме изображение электронного табло, представляя горящие лампочки символами "*"
  2. решает задачу распознавания букв в предположении, что на табло изображена только одна буква
  3. решает задачу распознавания для произвольного количества букв


Описание входных данных

Непрерывный ряд горящих лампочек одной строки, слева и справа от которого нет горящих лампочек, назовем серией. Каждая серия определяетея тремя числами: номером строки, номером столбца, в котором начинается серия, и количеством лампочек в серии. Изображение, находившееся на табло, было записано в текстовый файл путем описания множества всех его серий.

Первое число в файле - общее количество серий. Далее следуют тройки чисел, задающие серии. Числа в файле разделены пробелами или концами строк. Сначала в файле описаны все серии первой строки табло слева направо, затем второй, третьей и т.д. строк.


Описание вывода результата

После каждого нажатия клавиши "пробел" в изображении одной из букв, выведенных на экран, символы "*" следует заменить на символ, соответствующий этой букве, например, "А" для буквы А или "Ю" для Ю, до тех пор пока все буквы на экране не будут разпознаны. В случае неоднозначного распознавания буквы вашей программой допустимо после нажатия клавиши "пробел" заменить символы "*" в изображении этой буквы на два или даже три символа (например, на "О", "А" и "Л"), распределяя их по изображению буквы.

Если вашей программе не удалось распознать ту или иную букву, то символы "*" в ее изображении следует заменить на символ "?".


Примечания

  1. Все исходные данные корректны.
  2. Строки табло пронумерованы сверху вниз.
  3. В крайнем случае считывание данных можно организовать и с клавиатуры.
  4. Вместо замены "*" на экране на соответствующие символы в крайнем случае ответ можно выдать в следующем виде: для каждой буквы в новой строке напечатать номер строки и столбца первой лампочки первой серии этой буквы и соответствующий ей символ (символы).
  5. Если на вашем компьютере нет русских букв, используйте латинские буквы A, B, J, L, M, O, C, F.
  6. Файл данных для пункта (З) описывает произвольное количество букв, причем каждая из перечисленных букв может как встречаться несколъко раз, в том числе и в различных модификациях, так и отсутствовать.


Система оценки

  1. Ввод данных из файла и изображение их на экране - 10 баллов
  2. Всего за распознавание букв от 0 до 70 6аллов
    • Однозначное распознавание буквы (одним символом) - З балла за каждую
    • Распознавание буквы с помощью двух символов 2 балла за каждую
    • Распознавание буквы с помощью трех символов 1 балл за каждую
    • Замена символов "*" в букве на символ "?" 0 баллов
    • Неверное распознавание буквы -1 балл за каждую
  3. Работа с файлом, описывающим более одной буквы 20 баллов

Всего 100 баллов

 
Hosted by uCoz