Опять я со своими задачками. Но мне никуда от этого не деться.
Есть некоторая строка символов из нулей и единиц. Например:
01000010000011000000000000101000 0100000000000 ......... 001
разбив эту строку на подстроки по три символа, я подсчитал подстроки, в которых встречается "1" и в которых нет. Получил следующий результат:
(стало быть 1, где блок с "1" и 0 - без)
10101000110100001001100011110100 1
Теперь трудная для меня задача. Есть кодовая комбинация, состоящая из четырех символов, в которой должно быть три "0" и одна "1", при чем независимо от их порядка (т.е. '1000', или '0100', или '0010', или '0001' ). Мне необходимо найти первое же совпадение в этой строке. Т.е. я проверяю первые четыре символа, если нет попадания, то смещаюсь на один символ и снова сравниваю и так, пока не получится. В данном примере первая комбинация будет '0100'
Мне кажется, что ни preg_match, ни strstr в этом случае не помогут. Я мыслю, что нужно искать по количеству нулей, а их в кодовой комбинации 3, т.е. взять четыре символа из строки, проверить, если количество нулей равно трем, то попадание, если нет - смещаемся на один символ вправо. Вообщем, голова просто кипит =)
изрисовал кучу бумаги, а идей толковых не родилось. Помогите, плиз =/
1. Valimar - 09 Марта, 2009 - 09:20:21 - перейти к сообщению
2. Champion - 09 Марта, 2009 - 11:39:42 - перейти к сообщению
Valimar пишет:
Таких комбинаций не так уж и много - всего 4. Есть strpos() и orсостоящая из четырех символов, в которой должно быть три "0" и одна "1",
(Добавление)
еще с preg_match вариант такой
preg_match('/(0*10*)/', $stroka_s_00101011, $mathes);
потом пройти по $matches и убрать ототуда элементы, длина которых не 4
3. Valimar - 09 Марта, 2009 - 12:17:45 - перейти к сообщению
Champion пишет:
Таких комбинаций не так уж и много - всего 4. Есть strpos() и or
Просто неизвестно, какая комбинация встретится первой. А если нужно будет изменить кодовую комбинацию, т.е. прибавить ещё один "0", то со strpos() уже не получится.
Вообще мне не понятно, как делать сдвиг на один символ.
4. Champion - 09 Марта, 2009 - 12:50:30 - перейти к сообщению
Valimar пишет:
Если хочешь делать именно так, то:Вообще мне не понятно, как делать сдвиг на один символ.