Re: Из Турции с любовью :)
От: Трурль  
Дата: 09.03.06 12:58
Оценка: 33 (4)
import List
-- Отразить зеркально по горизонтали
mh =  map reverse
-- -"- -"- по вертикали
mv =  reverse
-- -"- -"- по вертикали и по огризонтали
mvh = mv.mh
-- Повернуть на 90 градусов по часовой стрелке
r90 = mh.transpose
-- -"- -"- -"- -"- против часовой стрелки
l90 = transpose.mh
-- Негатив картинки
inv = map (map invp) where invp '#'='.'; invp '.'='#'
-- Масштабировать
scale m n = (sv n).(sh m) where
    sv n  = concat.map (replicate n)
    sh n  = map (concat.(map(replicate n)))
-- Вырезать часть
crop x y w h = (crop1 y h).(map (crop1 x w)) where crop1 y h = (take h).(drop y)
-- Найти различие между рисунками
comp = zipWith (zipWith (cmp)) where 
    cmp '#' '#' = '.'
    cmp '.' '.' = '.'
    cmp  _  _   = '#'
-- Найти границы
bounds x = (l x, r x, t x, b x) where
    l x = minimum(map (length.(takeWhile (== '.'))) x)
    r x = maximum(map length x) -1- (l (mh x))
    t x = length (takeWhile (all(== '.')) x)
    b x = length  x -1- (t (mv x))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.