Я был бы очень признателен за помощь с этим алгоритмом/псевдокодом.
В основном я ищу слова с определенным шаблоном (неважно каким). У меня есть специальная функция для его определения, которая возвращает 1, если слово соответствует требованиям. Когда это произойдет, второе слово после этого должно быть опущено и не сохранено в выводе. У меня не было проблем с тем, что "выбранные" слова разделены одним "не выбранным" словом. Проблема в том, что делать, когда "избранные" появляются один за другим?
Я подготовил такой псевдокод, чтобы немного прояснить ситуацию. Но, к сожалению, это работает не для всех комбинаций "избранных" и "не выбранных".
Я ввел три счетчика/переменных, которые помогли мне определить позицию, в которой я сейчас нахожусь.
Следующий псевдокод не в логическом порядке!
if (counter == 2 || in_a_row >= 3) {
erase = 1;
counter--;
yes = 0;
if (!chosen)
counter = 0;
}
if (chosen) {
counter++;
yes = 1;
in_a_row++;
} else {
if (yes = 1) /* yes - is used when the preceeding word is chosen and the next is not chosen, in order to keep track of the counter */
counter++;
}
if (in_a_row == 5)
in_a_row = 4; /* just to make sure that counter doesn't go too high */
if (erase == 1)
/*erasing procedure*/
Если у Вас есть идея попроще или вы видите в ней ошибку, ПОЖАЛУЙСТА, помогите мне. Пытаюсь разобраться 8 часов...
i
, просто отметьте позициюi+2
для стирания. И это все. Это приведет к тому, что триггерные слова вi
иi+1
будут стирать слова вi+2
иi+3
. Триггерные слова вi
,i+1
иi+2
удалят слова вi+2
(которое само по себе является триггерным словом),i+3
иi+4
. Что мне здесь не хватает? - person rpsml   schedule 26.08.2012