Модераторы: ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обесцвечивание цветов в коде 
:(
    Опции темы
comhunt
Дата 4.4.2010, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 20.3.2009

Репутация: нет
Всего: нет



Необходимо написать функцию для обесцвечивания цветовых параметров.


Хотелось бы для начала реализовать обесцвечивание одного из вариантов задания цвета:  #XXXXXX - где X-шестнадцатеричное число
\#[0-9A-Fa-f]{6}

Хотя есть и другие вариант например 
1. #fff или #000
2. red, black  и другие названия цветов

Обесцвечивание надо произвести по принципу вычисления среднего арифметического между тремя составляющими цветов RGB, т.е.
#RRGGBB
BW=(RR+GG+BB)/3

Результирующий цвет #BWBWBW

Как я понимаю, чтобы это реализовать, нужна конструкция в виде цикла с регулярными выражениями.



Это сообщение отредактировал(а) comhunt - 6.4.2010, 03:02
PM MAIL   Вверх
NuINu
Дата 4.4.2010, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 19.7.2008

Репутация: нет
Всего: 6



и какие дальнейшие размышления по этому поводу?

размышления:
есть задание, надо бы решить!
а давайте напишем программу!
хм... ну а что там в программе?
ну что то вроде цикла будет, с регулярными выражениями!
....



...
ура решено!

как вы счтитаете, много еще шагов осталось? )))
постарайтесь протись немного дальше. хотя бы до стадии неработающего регехпа типа там s[\#(.+)(.*)(smile)]<color2bw($1, $2, $3)>
PM MAIL   Вверх
comhunt
Дата 6.4.2010, 03:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 20.3.2009

Репутация: нет
Всего: нет



NuINu, не имею большого опыта работы с регэкспами. Вы можете посоветовать толковый источник где было бы описана работа с регэкспами на доступном уровне? Пока проблема в том что я не знаю как подступиться к задаче и разбить ее на составляющие.

PM MAIL   Вверх
amg
Дата 6.4.2010, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: нет
Всего: 50



Для начала:
Код
while (<>) {
  s/\b(?<=#)([\dA-F]{6})\b/grey($1)/ie;
}

sub grey {
  my ($r,$g,$b) = map { hex } $_[0] =~ /(..)(..)(..)/;
  my $bw = sprintf "%02X", ($r+$g+$b)/3;
  return $bw x 3;
}


PM MAIL   Вверх
NuINu
Дата 6.4.2010, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 19.7.2008

Репутация: нет
Всего: 6



читайте книжки, по перлу, и есть отдельная книжка, так и называется Регулярные Выражения. а так можно просто в гугле набить, перл регулярные выражения. получите достаточно инфы для изучения.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




[ Время генерации скрипта: 0.1736 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.