Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Perl
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2011, 13:39   #1
juliajuliajulia
 
Аватар для juliajuliajulia
 
Регистрация: 02.09.2011
Сообщений: 4
По умолчанию perl (задача на полиндром)

Помогите ,кто шарит в перле пожалуйста.
такая задача:
__________________________
Задана строка символов. Можно ли разделить строку на три части, так
чтобы из них можно было составить палиндром?
Палиндром -строка, которая пишется одинаково справа налево и слева
направо.
Написать программу, которая запрашивает строку и печатает части, на
которые предлагается делить (каждую часть своим цветом) и с
новой строки один из возможных палиндромов.
Пример (в условных обозначениях).
Строка: АЛАШШ
<red>Ш</red><green>Ш</green><blue>АЛА</blue>
ШАЛАШ

__________________________

у меня она ,в принципе решена,вот код:

Код:
#!/usr/bin/perl
print "Content-type:text/html; charset=KOI8-r\n\n";
$string = $ENV{'QUERY_STRING'};
($x,$mas)=split(/=/, $string);
##############################################
$mas=~tr/+/ /;
$mas=~s/%([\w\d]{2})/pack("c",hex($1))/eg;
#$mas=~tr/+/ /;

#$mas=~s#%2F#/#g;
#$mas=~s#%3C#<#g;
#$mas=~s#%3E#>#g;
#$mas=~s#%26#\&#g;
#$mas=~s#%24#\$#g;
#$mas=~s/%23/#/g;
#$mas=~s#%5C#\\#g;
#$mas=~s#%25#\%#g;


##############################################
@mas=split(//,$mas);
 $len=length($mas);
 $k=$len;

for ($i=0;$i<$len;++$i)
{
   if ($mas[$i] ne $mas[$len-$i-1])
   {
   $k1=$i;
   $i=$len+1;
   print"Не полиндром: ";
   }
   if ($i eq $k-1) {print "Полиндром: ";$k1=$len+3;}
}

print "<br>" ;
print "<table><tr>";
#print "<td>@sec = </td>";
for ($j=0;$j<$len;++$j)
{
if ($j eq $k1){
#print "<font size=5 color='red'>  $mas[$j] </font>";
print "<td BGCOLOR=RED> $mas[$j]</td>";
++$j;} ;
if ($j eq ($len-$k1-1)) {
#print "<font size=5 color='red'>  $mas[$j] </font>";
print "<td BGCOLOR=RED> $mas[$j]</td>";
++$j;} ;
#print "<font size=5 color='blue'>  $mas[$j] </font>" ;
if ($j<$len) { print "<td BGCOLOR=GREEN> $mas[$j] </td>";};


}
посмотреть как он работает можно тут http://ulm.udsu.ru/~justjuliya/ называется CGI2

но вот в чем прикол....если ввести 111211,то предлагается убрать 12 для получения полиндрома...но это не минимально...надо убрать 2,чтоб получилось 11111. в коде не прописан случай ,если количество символов в конечном полиндроме нечетно...я вбщем не знаю как дописать....ребят,помогите пожалуйста,как бы это банально не звучало,но это очен важно и срочно!

icq: 421034383
vk: http://vkontakte.ru/id144593238

Последний раз редактировалось juliajuliajulia; 01.10.2011 в 13:48.
juliajuliajulia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PERL lowkee Фриланс 1 12.11.2010 01:02
Perl isus Perl 3 06.05.2010 10:24