Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 26.12.2013, 17:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

MrBoriska,
может для примера что на входе что на выходе должно быть?
Ответить с цитированием
  #12 (permalink)  
Старый 26.12.2013, 22:02
Интересующийся
Отправить личное сообщение для MrBoriska Посмотреть профиль Найти все сообщения от MrBoriska
 
Регистрация: 25.12.2013
Сообщений: 12

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

а так же он указывает через запятую слова, которые генератор не должен учитывать, но у меня, именно вот этот пункт почему то не работает.
Может там где функция grep(), что то не то, а то я не понимаю вообще зачем она, точнее понимаю зачем, но не понимаю как она так это делает(там подписано что).
Ответить с цитированием
  #13 (permalink)  
Старый 26.12.2013, 22:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

MrBoriska,
ваш код разбирать видимо охотников мало, легче написать новый еслибы вы чётко описали свой генератор ... что на входе что на выходе я попрежнему незнаю несмотря на ваши обьяснения
Ответить с цитированием
  #14 (permalink)  
Старый 26.12.2013, 23:51
Интересующийся
Отправить личное сообщение для MrBoriska Посмотреть профиль Найти все сообщения от MrBoriska
 
Регистрация: 25.12.2013
Сообщений: 12

На выходе должна быть строка, состоящая из слов перечисленных через запятую.
На входе должно быть три переменные:
1. Строка, состоящая из набора слов, символов, пробелов и даже html тегов.
2. Число, которое означает минимальное количество символов в слове.
3. Число, означающее минимальное количество повторений слова в тексте.
4. Слова, перечисленные через запятую, которые не следует учитывать при выводе результата.

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

Так понятно? Да и вроде код мой тоже относительно понятный, кроме двух последних функций.

Последний раз редактировалось MrBoriska, 26.12.2013 в 23:55.
Ответить с цитированием
  #15 (permalink)  
Старый 26.12.2013, 23:59
Интересующийся
Отправить личное сообщение для finestra Посмотреть профиль Найти все сообщения от finestra
 
Регистрация: 28.02.2013
Сообщений: 13

мне конечно тоже лень, разбираться что как работает,
но вот в строке 27, вы присваиваете DeleteWord = false,
в while (строка 30), в условии написано, что оно может выполниться
если DeleteWord === true, но обрести значение труэ DeleteWord
может только внутри цикла,
выходит, что цикл никогда не запустится.
Ответить с цитированием
  #16 (permalink)  
Старый 27.12.2013, 00:19
Интересующийся
Отправить личное сообщение для finestra Посмотреть профиль Найти все сообщения от finestra
 
Регистрация: 28.02.2013
Сообщений: 13

функция countKeywords () большая,
раздели ее на несколько функций поменьше,
и каждую протестируй.
Ответить с цитированием
  #17 (permalink)  
Старый 27.12.2013, 00:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

MrBoriska,
function gen(str, len, repeat,tabu)
   { var obj_tabu = {};
     for (var i=0; i<tabu.length; i++)  {obj_tabu[tabu[i]]=!0};//сформировали обьект из запретных слов
     str = str.replace(/<[^>]*>/g, ' ');//выкусили теги
     str = str.replace(/[^a-zа-яё\s]/gi, ' '); //убрали небуквы
     str = str.split(/\s+/) ;//сформировали массив слов из строки
     var obj_output = {};
     for (var i=0; i<str.length; i++)  {
       var word = str[i];
       if(word.length >= len && !obj_tabu[word])  obj_output[word]=(obj_output[word]||0)+1;
     } // сформировали обьект из разрешённых слов  и нужной длины
     var output = [];
     for(var word in obj_output) if (obj_output[word] >= repeat) output.push(word);//отобрали слова с нужным повторением
     return output
   }
  var str = 'На выходе должна быть строка, состоящая из слов перечисленных через запятую..'+
'На входе должно быть три переменные: '+
'1. Строка, состоящая из набора слов, символов, пробелов и даже html тегов. '+
'2. Число, которое означает минимальное количество символов в слове. '+
'3. Число, означающее минимальное количество повторений слова в тексте. '+
'4. Слова, перечисленные через запятую, которые не следует учитывать при выводе результата.'
  alert(gen(str, 3, 2,['Число','слов']) )
Ответить с цитированием
  #18 (permalink)  
Старый 27.12.2013, 00:54
Интересующийся
Отправить личное сообщение для MrBoriska Посмотреть профиль Найти все сообщения от MrBoriska
 
Регистрация: 25.12.2013
Сообщений: 12

finestra,
я уже все протестировал и сразу сказал где код стопорится!

Меня это тоже смутило, но даже если изменить на false результат тот же.
Ответить с цитированием
  #19 (permalink)  
Старый 27.12.2013, 00:56
Интересующийся
Отправить личное сообщение для MrBoriska Посмотреть профиль Найти все сообщения от MrBoriska
 
Регистрация: 25.12.2013
Сообщений: 12

рони,
Огромное спасибо! Буду тестировать и отпишусь о результатах.
Ответить с цитированием
  #20 (permalink)  
Старый 27.12.2013, 18:06
Интересующийся
Отправить личное сообщение для MrBoriska Посмотреть профиль Найти все сообщения от MrBoriska
 
Регистрация: 25.12.2013
Сообщений: 12

Код работает великолепно, но нету коэффициента совпадения.
Тоесть это еще один параметр, который определяет когда словам совпадать, а когда нет. Определяется он числом с плавающей точкой, От 0 и до 1, где 0 это когда все слова всегда будут совпадать, а когда 1 то только при точном совпадении. Ну допустим при 1 будут равны keyword и keyword, а при 0.8 будут равны keyword и keywords. сделать можно через match(),(так было сделано в старом коде)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[FF+GM] Проверьте пжл. скрипт(не могу найти ошибку) Benos Firefox/Mozilla 4 30.03.2013 17:46
Не могу найти ошибку nemo4430 Общие вопросы Javascript 6 26.11.2012 23:33
не могу найти ошибку в коде MasterP Общие вопросы Javascript 1 03.07.2011 02:54
Не могу найти ошибку. Hellp jey7 Events/DOM/Window 2 20.06.2010 10:49
Не могу найти ошибку Lewik AJAX и COMET 4 19.07.2009 21:33