Category: Программирование(Страница 5 из 7)

Python: Алгоритм Кнута–Морриса-Пратта (алгоритм поиска подстроки в строке)

Алгоритм Кнута-Морриса-Пратта, основанный на использовании префикс-функции. Как и в примитивном алгоритме поиска подстроки, образец «перемещается» по строке слева направо с целью обнаружения совпадения. Однако ключевым отличием является то, что при помощи префикс-функции мы можем избежать заведомо бесполезных сдвигов.

Пусть S[0..m–1] – образец, T[0..n–1] – строка, в которой ведется поиск. Рассмотрим сравнение строк на позиции i, то есть образец S[0..m–1] сопоставляется с частью строки T[i..i+m–1]. Предположим, первое несовпадение произошло между символами S[j] и T[i+j], где i < j < m. Обозначим P = S[0..j–1] = T[i..i+j–1]. При сдвиге можно ожидать, что префикс S сойдется с каким-либо суффиксом строки P. Поскольку длина наиболее длинного префикса, являющегося одновременно суффиксом, есть префикс-функция от строки S для индекса j, приходим к следующему алгоритму:

  • Построить префикс-функцию образца S, обозначим ее F.
  • Положить k = 0, i = 0.
  • Сравнить символы S[k] и T[i]. Если символы равны, увеличить k на 1. Если при этом k стало равно длине образца, то вхождение образца S в строку T найдено, индекс вхождения равен i – |S| + 1. Алгоритм завершается. Если символы не равны, используем префикс-функцию для оптимизации сдвигов. Пока k > 0, присвоим k = F[k–1] и перейдем в начало шага 3.
  • Пока i < |T|, увеличиваем i на 1 и переходим в шаг 3.
  • Возможная реализация алгоритма Кнута-Морриса-Пратта на языке Python выглядит так:

    Источник: habrahabr.ru/post/191454/

Вычисление контрольной цифры штрих-кода EAN-13 на PHP

Необходимо было вычислить контрольную цифру штрих-кода EAN-13. Решение: написана функция на PHP

Создание кроссбраузерного модального окна, открывающегося один раз, при заходе на сайт (Modal Window + jQuery Cookie)

Пример создания кроссбраузерного модального окна, открывающегося один раз, при заходе на сайт. Используемые технологии: jQuery + Cookie + CSS. Пример работает во всех современных браузерах (кроссбраузерность).

Окно открывается только при первом посещении сайта. При этом, можно выбрать как просмотр, так и отказ от посещения сайта.

Данный трюк может быть использован для предложения подписки на те или иные ресурсы сайта (или социальных сетей), предложения тех-или иных специальных предложений, и т.д. Также данный прием может быть использован, при создании сайтов взрослой тематики (алкогольная продукция, контент для взрослых, и т.д.).

Смотреть пример (Demo)

Скачать исходник: .ZIP | .TAR.GZ

Коэффициент корреляции Пирсона

Код подкатом…

Читать далее…

BASM (БыдлоАссемблер)

Код подкатом…

Читать далее…

© 2007–2024, konyakov.ru