> -- Илья Ермаков писал(а):
> Подвернулся примерчик из реальности.Несколько соображений.
1. Если у pattern "*" в конце, то зачем проверять, идет ли дальше 0Х? Это и есть в конце. Или что-то опущено в условиях.
2. Вот это все> -- Илья Ермаков писал(а):
> ok = ( !E i: (i < LEN(uri$)) & (i < LenOf(pattern)) : uri[i] # pattern[i] )& ( (LenOf(pattern) = LEN(uri$)) OR (pattern[LEN(uri$)] = '*') & (pattern[LEN(uri$)+1] = 0X) )не нужно, его сложность превышает сложность программы. Допустить здесь ошибку часто легче, чем в самой программе. В реальной жизни это все мгновенно отмирает (if any). Честно, говоря мне даже влом в это вникать.
3. А вот инвариант, наоборот, очень важен. Он очень простой: куски сравниваемых строк от начала до текущей позиции (< i) совпадают. Даже не требуется более строгая запись.
4. Слова "линейный поиск" поиск лишние, забудьте про них. Гораздо важнее пункт 3.