массив с n элементами с отличием на 2

Статус
В этой теме нельзя размещать новые ответы.
спасибо, буду доделывать дальше
при большом тексте и относительно не большом кол-ве KEYев, в принципе будет и так работать.. а если на 10 слов нужно расставить 4 кея, может не получиться...
 
попробовал с большим текстом, все кеи расставляет в начале почему то
Очень часто необходимо выполнить КЕЙ неоднократно какое-либо КЕЙ действие в КЕЙ программе. Если эти части КЕЙ в программе повторяются, то используют, так называемый, цикл. Таким образом, цикл - это повторяющееся действие, как в компьютерном мире, так и в жизни. Компании, по продаже дисков, требуется таблица, отображающая стоимость доставки, которая будет добавляться к стоимости заказа клиента. Стоимость доставки зависит от расстояния и может быть вычислена с помощью простой формулы. Html-код, отображающий эту таблицу, приведён ниже. Как видите, он достаточно длинен, причём некоторые его фрагменты повторяются.
Очень часто необходимо выполнить неоднократно какое-либо действие в программе. Если КЕЙ эти части КЕЙ в программе КЕЙ повторяются, то КЕЙ используют, так называемый, цикл. Таким образом, цикл - это повторяющееся действие, как в компьютерном мире, так и в жизни. Компании, по продаже дисков, требуется таблица, отображающая стоимость доставки, которая будет добавляться к стоимости заказа клиента. Стоимость доставки зависит от расстояния и может быть вычислена с помощью простой формулы. Html-код, отображающий эту таблицу, приведён ниже. Как видите, он достаточно длинен, причём некоторые его фрагменты повторяются.
как разбросать по всему тексту не подскажите?
 
попробовал с большим текстом, все кеи расставляет в начале почему то
как разбросать по всему тексту не подскажите?

он фильтрацию начинает с первого слова ... просто если нужно по всему тексту раставить ключи , нужно совсем другое условие писать.. К примеру рандомом задавать через какое кол-во слов ставить следующий КЕЙ в зависимости от плотности текста... Если ничего не напишете, вечером сделаю...
 
попробовал с большим текстом, все кеи расставляет в начале почему то

Так по условию же было так, что кеи раставляются по смещению, а не по кол-ву слов.

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

В идеале для автора , нужно кол-во слов разделить на кол-во кеев, и добавить поправочный коэффициент который будет рандомный в диапозоне половины расстояния от кеев +/-

К примеру кол-во слов 15 , кол-во кеев 3.
Получается коэф (только целые числа) $k=[-2,-1,0,1,2];
и Кеи будут расположенны на позиях ($k+5,$k+10,$k+15)
На крайних позициях диапазон только [-2,-1,0]

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

Считает, он по символам, а не по пробелам, но думаю, что это не критично.

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

а как на счёт расстояния между каждым кеем в 2+?
 
Вот исходя из условий которые я описал ранние.

PHP:
<?
// Исходные данные
$col_keys = "3";
$text_key = "<b>KEY</b>";
$s="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30";

// Преобразования массива
$nl = explode(" ", $s);
$col = count ($nl);
$key_pos = floor($col/$col_keys);
$shifft_key = floor ($key_pos / 2) - 1; 
$sight = 1;
for ($i = 1; $i <= $col_keys; $i++) {
    if (1!=rand(1,2)){$sight = $sight*-1; } // Случайным образом выбираем знак для коэф.
	if ($i == $col_keys){$sight = -1; }     // Для последнего Значения принимает только отрицательный коэф.
	$k=(rand(0,$shifft_key)*$sight);        // Вычисляем коэф смещения
	$pos[$i] = $key_pos + $k;               // Вычисляем позицию кея
    array_splice($nl, $pos[$i], 0, $text_key); // Вставляем кей 
	echo "<hr> <br> кол-во слов - $col, позиция кея - $key_pos, коэф смещения - $k, позиция + коэф  $pos[$i]<br> ";
	print_r($nl);
	$key_pos=$key_pos+floor($col/$col_keys); // Переходим к следующему кею.
  
}

// Ввыод готовых данных 
echo("<br><br><hr>");
foreach ($nl as &$value) {
    echo " ";
	echo ($value);
}
?>
 
а как на счёт расстояния между каждым кеем в 2+?

В большинстве случаев будет соблюдаться, но если хочется гарантии поставьте в следующей строке вместо 0, например 20 (думаю, что средняя длина двух слов в русском языке меньше этой величины)

PHP:
 + rand(0, $piecesize)

2funman

Код у Вас очень запутанный, да и не оптимальный (излишний расход памяти и вызов совершенно ненужных функций). Через пару недель Вы с трудом будете понимать принцип его работы.

Кроме того он не решает поставленной задачи. Кеи не распределяются равномерно, а располагаются ближе к его началу. Чтобы убедиться в этом возьмите хотябы 2-3 килобайта текста
 
2funman
Код у Вас очень запутанный, да и не оптимальный (излишний расход памяти и вызов совершенно ненужных функций). Через пару недель Вы с трудом будете понимать принцип его работы.
Кроме того он не решает поставленной задачи. Кеи не распределяются равномерно, а располагаются ближе к его началу. Чтобы убедиться в этом возьмите хотябы 2-3 килобайта текста

Что за бред? Это чисто теоретически не возможно чтобы она не равномерно распределяла КЕИ. Так как она общее кол-во слов делит на кол-во КЕЙев и равномерно расставляет позиции , с учетом случайного коэф который делает смещение от центра на возможно отклонение +/-


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

Через пару недель Вы с трудом будете понимать принцип его работы.
Это тоже врядли, но комменты еще никто не отменял.

А Насчет "хотябы 2-3 килобайта текста" , ну и что взял , все строго по правилам, равномерно , рандомнно с выдержкой нужного интервала )) Там же специально в теле цикла оставил отладочную информацию чтобы было видно как они распределяются ...

Кстати насчет равномерности при по символьном расчете, как даже теоретически может быть равномерное распределение, если все слова состоят из разного кол-ва символов ???

вот пример - 335слов , 10 КЕYев, 2.5 кб
Требования пользователя подразделяются на две категории: * возможности, необходимые пользователю/заказчику для решения проблемы или достижения цели; * ограничения, накладываемые пользователем/заказчиком на способ решения проблемы или достижения цели. Требования к KEY возможностям сайта описывают функции и операции, необходимые пользователю. Часто удобно описывать их в терминах последовательности операций («при нажатии туда выполнить это» и т.п.). Конечно же, нет смысла расписывать функциональность, например, форума или гостевой книги до каждого клика. KEY Чем проще и понятней - тем лучше, однако постарайтесь не упускать важные детали. Функциональность сайта удобно отобразить KEY графически (диаграммы Гарретта, UML). Также полезно нарисовать структуру страниц сайта - часто она получается древовидной. Ограничения предопределяют проектные решения при разработке сайта и его использовании. Например, можно определить внешние связи, язык программирования и интерфейс сайта либо потому, что он является частью большой KEY системы, либо потому, что по каким-то причинам требуется применять определенные протоколы, стандарты, веб-сервер или библиотеки. Сюда также входят требования к взаимодействию «человек-компьютер», которые могут включать примеры необходимых диалогов, всплывающих подсказок, ограничения KEY по поддержке тех или иных форматов файлов и т.д. Объем веб-страницы и количество графики на ней, поддержка основных браузеров и разрешений мониторов - все KEY это ограничения, влияющие на процесс разработки веб-сайта. При необходимости, в требованиях нужно указывать количественные значения требуемой производительности и точности. Впоследствии это облегчит приемочное тестирование - проверку того, соответствует ли разработанный сайт требованиям Заказчика. Ну и конечно же не забываем определить требования к оптимизации KEY сайта. Это тот подводный камень, о котором часто забывают на стадии разработки, но в последующем он может резко и непредсказуемо увеличить бюджет сайта, а в KEY худшем случае, вообще привести к необходимости полностью перестраивать веб-сайт. Поэтому оптимизацию и продвижение сайта лучше проводить уже на стадии его разработки, а не после публикации в Интернет. Здесь целесообразно указать следующие требования: * Ключевые слова, по которым будет KEY продвигаться ресурс или отдельные страницы; * Примерное количество исходящих и входящих ссылок; * Прогнозируемая посещаемость через месяц, квартал, полгода; KEY * Прогнозируемые позиции в поисковиках по определенным словосочетаниям через определенное время и т.д.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху