Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> задача про палиндром, нужна помощь
kvant  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 25
Пользователь №: 27099
На форуме: 5 лет, 9 месяцев, 18 дней
Карма:




Палиндром называют последовательность символов, которая читается как слева направо, так и справа налево. Найти во введенной строке подстроку-палиндром максимальной длины.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kirik  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Жадный квантификатор
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6128
Пользователь №: 4795
На форуме: 8 лет, 9 месяцев, 8 дней
Карма: 118




Сначала было слово smile.gif
Ваши мысли, коллега?
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kvant  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 25
Пользователь №: 27099
На форуме: 5 лет, 9 месяцев, 18 дней
Карма:




Это мой исходник. Он работает правильно. Вот тока если задать : qweadafg << он показывает что это не палиндром, хотя в этой строке qweadafg >> ada - это максимальная длина палиндрома и он является палиндромом! Как это исправить? Как это сделать? Подскажите плз!!!

<h2>Тест палиндрома</h2>
<
span style="font-size:10pt">Число или слово которое читается как слева на право, так и слева направо. Например: 909, 12344321, radar, bob</span>
<
br><br>
<
form action="" method="post">
Слово для проверки <input type="text" name="testword" value="straw warts">
<
input type="submit" name="submit" value="Test">
</
form>
if(isset($_POST['testword'])){
$testword = strtolower( $_POST['testword'] );
$testword = preg_replace( '/[^\sa-z0-9]/', '', $testword );
if($testword == strrev($testword)){
echo '<i>'.$testword. ' </i>это <strong>палиндром</strong> и ее <strong>'.strlen($testword).'</strong> максимальная длина';
}
else{
echo 'Извините ваша слово '.$testword.' это не палиндром';
}
}

?>
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Trianon  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



先生
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 805
Пользователь №: 26653
На форуме: 5 лет, 10 месяцев, 14 дней
Карма: 38




Это Ваш исходник.
Только он нихрена не находит.
Он лишь проверяет введенное на палиндром.

И кстати, с utf-8 он работать не станет.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kvant  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 25
Пользователь №: 27099
На форуме: 5 лет, 9 месяцев, 18 дней
Карма:




Trianon
Согласен, у вас есть другой вариант? Поможете?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Trianon  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



先生
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 805
Пользователь №: 26653
На форуме: 5 лет, 10 месяцев, 14 дней
Карма: 38




готового у меня нет.
Общий подход может быть таким.
Разбить строку на символы (это для того, чтобы можно было работать с utf-8)
Рассмотреть движение cтроки и её перевернутой копии навстречу друг другу с перекрытием
от
------
------
и до
    ------
------

Для каждого варианта перекрытия посчитать диапазоны совпадающих символов, оставляя самый длинный.
вывести найденное.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kirik  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Жадный квантификатор
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6128
Пользователь №: 4795
На форуме: 8 лет, 9 месяцев, 8 дней
Карма: 118




Задачка интересная
первое что пришло в голову
$word = 'qweadafg';

// Разбить строку на символы (это для того, чтобы можно было работать с utf-8)
$arr = str_split($word);
$rarr = array_merge(array_fill(0, count($arr), ''), array_reverse($arr));

$cm = 0;
$match = '';
// Рассмотреть движение cтроки и её перевернутой копии навстречу друг другу с перекрытием
while(array_shift($rarr) !== null) {
// Для каждого варианта перекрытия посчитать диапазоны совпадающих символов, оставляя самый длинный.
$matches = array_intersect_assoc($arr, $rarr);
if(!empty($matches)) {
$c = count($matches);
if($c > $cm) {
$cm = $c;
$match = implode('', $matches);
}
}
}


echo $match; // вывести найденное.

Для работы с UTF8 надо переписать строчку $arr = str_split($word);, мне лень :)
UPD.
Добавил комменты из поста Trianon


Это сообщение отредактировал kirik - 5.04.2011 - 09:44
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kvant  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 25
Пользователь №: 27099
На форуме: 5 лет, 9 месяцев, 18 дней
Карма:




что то до меня не дошло, а можно в виде кода показать?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kirik  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Жадный квантификатор
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6128
Пользователь №: 4795
На форуме: 8 лет, 9 месяцев, 8 дней
Карма: 118




Цитата (kvant @ 5.04.2011 - 00:39)
что то до меня не дошло, а можно в виде кода показать?

В моём посте посмотри smile.gif
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Trianon  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



先生
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 805
Пользователь №: 26653
На форуме: 5 лет, 10 месяцев, 14 дней
Карма: 38




kirik
Я может невнимательно смотрел, но мне показалось, что array_intersect_assoc найдет все пересечения, а не только их непрерывные (по ключам) подмножества.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kvant  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 25
Пользователь №: 27099
На форуме: 5 лет, 9 месяцев, 18 дней
Карма:




kirik
У вас классно получилось!!! Клевый алгоритм!!! А вы сможете его вставить в мой исходник и проверить он там заработает или нет. Попробуйте пожалуйста! Если это вас не затруднит. Спасибо большое!!!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kirik  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Жадный квантификатор
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6128
Пользователь №: 4795
На форуме: 8 лет, 9 месяцев, 8 дней
Карма: 118




Цитата (Trianon @ 5.04.2011 - 00:51)
array_intersect_assoc найдет все пересечения

все пересечения значений и их ключей... я уже сам запутался :)

мини проверка
dwaba:
0 - d : _ - 0
1 - w : _ - 1
2 - a : a - 2 <
3 - b : b - 3 <
4 - a : a - 4 <
w - 5
d - 6

dabaw:
0 - d : w - 0
1 - a : a - 1 <
2 - b : b - 2 <
3 - a : a - 3 <
4 - w : d - 4

abadw:
w - удалён
d - удалён
0 - a : a - 0 <
1 - b : b - 1 <
2 - a : a - 2 <
3 - d
4 - w

вроде всё верно


UPD
Цитата (kvant @ 5.04.2011 - 01:12)
А вы сможете его вставить в мой исходник и проверить он там заработает или нет.

Он работает, поверьте :)

Это сообщение отредактировал kirik - 5.04.2011 - 10:24
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Michael  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6073
Пользователь №: 18498
На форуме: 7 лет, 5 месяцев, 20 дней
Карма: 256




Цитата
А вы сможете его вставить в мой исходник и проверить он там заработает или нет.

а почему сам не вставишь и не проверишь? Не умеешь? Тогда сейчас самое время научиться.


--------------------
There never was a struggle in the soul of a good man that was not hard
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kvant  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 25
Пользователь №: 27099
На форуме: 5 лет, 9 месяцев, 18 дней
Карма:




вставляю, тока не работает(( незнаю как. Вы мне поможете?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Trianon  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



先生
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 805
Пользователь №: 26653
На форуме: 5 лет, 10 месяцев, 14 дней
Карма: 38




kirik

мини-проверка:

слово - отклик
------------------
processor - roor
translator - rlr

Подобного рода ложные срабатывани я и имел в виду.

Собственно, тредстартеру это весь корм совершенно не в коня.
Так что можно даже не исправлять.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса