Здравствуйте, Mamut, Вы писали:
M>Дан рисунок, представленный ASCII кодами (. — белый, # — черный). Задача: На каждом из языков Java, C, Python, Haskell написать программу, делающую с рисунком следующее:
Лобовое решение для Хаскела — входную битмапу представить в виде массива пикселов, а выходную — в виде списка, который строится последовательно по строкам. Если надо, из списка снова строится массив, и т.д.
На операциях вырезания региона это может быть избыточно (строим массив всей картинки, а используем только часть). Значит, нужен фильтр, который отсекал бы лишнее от входного списка и строил массив только по результату.
То есть, картинку нужно хранить или в списочном представлении, или в массивном... и каждая функция пусть выбирает наиболее удобное, а если входная картинка неудобная, то сперва конвертирует.
О таких мелочах, как разложение функций на отдельно итерирование и отдельно преобразование координат и передачу одних функций в другие — просто молчу. List comprehensions могут рулить, кстати говоря...
Хм... сперва я думал, что задачка на тупое кодирование. А на самом деле из Хаскела можно много чего выжать.