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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сжатие строки (cgi скрипт) 
:(
    Опции темы
annairam
Дата 27.3.2011, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый вечер!Не могли бы вы помочь с написанием скрипта?

Сжатие строки
Один из простых способов сжатия информации заключается в поиске
одинаковых частей, идущих подряд. Вместо нескольких повторений
можно записать их количество и всего одну часть.
Задача.
  По заданной строке выдать её максимальное сжатие.
   Длинна получившейся строки считается вместе с числом. Длина
   числа - количество цифр в десятичной записи.

Техническое требования

  Задана строка не содержащая цифр. Длина входной строки
  не более 100 символов. Если вариантов сжатия несколько, то выдать любой.

ПРИМЕР

  Строка: ababababABabAbbccccccccccc
  Сжатие: 4ab1ABabAbb11c

PM MAIL   Вверх
Pfailed
Дата 27.3.2011, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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





--------------------
PM MAIL   Вверх
annairam
Дата 28.3.2011, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Надо что-то делать  с  этим?

" use Compress::LZW;
  
  my $compressed = compress($fatdata);
  my $fatdata    = decompress($compressed);
  
  my $smallcompressed = compress($thindata, 12);
  my $thindata        = decompress($smallcompressed, 12);"

один раз только скрипты писали(



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


сплю...
**


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

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



Вот такой вариант, может поможет:
Код

$str = "ababababABabAbbccccccccccc";
$str =~ s#(\w+?)\1+#length($&)/length($1).$1#ge;
print $str;


Результат: 4abABabA2b11c, так думаю правильнее

Это сообщение отредактировал(а) alezzz - 28.3.2011, 10:27
PM MAIL   Вверх
alezzz
Дата 28.3.2011, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


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

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



Не учел случай когда нужна 1 перед неповторяющейся последовательностью, вот исправленый вариант:
Код

$str = "ababababABabAbbccccccccccc";
while($str =~ /(\w*?)(\w+?)\2+/g){
    $res .= "1".$1 if $1;
    $res .= (length($&) - length($1)) / length ($2) . $2;
}
print $res;

PM MAIL   Вверх
annairam
Дата 28.3.2011, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо огромное!вроде все работает)))
PM MAIL   Вверх
annairam
Дата 28.3.2011, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Что то не работает сам cgi((((


Вот в html пишу 

<h2>  Второе задание по  CGI. </h2>
<form action="cgi-bin/pyp2.cgi" method=GET>
<input type="button" value="Справка" onClick='alert("Даннй скрипт по заданной строке выдает ее максимальное сжатие.");'><br>
<h4>Введите слово</h4>

<input type="text" name="qwe">
<input type=submit value="Проверить"> <input type=reset value="Сброс">

</form></div>


сам cgi написала так


#!/usr/bin/perl
$string = $ENV{'QUERY_STRING'};
@p = split (/&/, $string);
foreach $i (@p)
{
     ($name,$value)= split (/=/,$i);
};
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack ("C", hex ($1))/eg;
     if ($name eq "qwe"){
       $str=$value;}
print "Content-type: text/html; charset=KOI8-r \n\n";
     while($str =~ /(\w*?)(\w+?)\2+/g){
     $res .= "1".$1 if $1;
     $res .= (length($&) - length($1)) / length ($2) . $2;
}
print $res;





и в итоге никакого результата не выдается(по идее надо чтоб после того как пользователь 
ввел слово в эту форму он это слово сжимал.в самом perl  Ваш код работает когда слово задается
сразу,а вот тут уже нет.
может я что-то неправильно пишу?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




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


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

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