> -- Цитата:
> и школярская привычка в программировании использовать одно буквенные идентификаторы, при этом визуально мало различимые ( i , j ), а не слова наполненные смыслом из предметной области,
Смысловые идентификаторы использую для внешних сущностей, локальные переменные имеет смысл называть короче, чтобы они выделялись.
Смысл их должен быть как можно более очевиден из самой процедуры (и инварианта в комментарии, если нужно). Процедура - обычно не более 10-20 строк....
Перепишите для сравнения с вместо i и j с именами currentAreaBeg и currentAreaEnd и сравните читаемость.

> -- Цитата:
> и ошибку признаем, но алгоритм не правим,
Алгоритм там правильный, опечатка "признанная" тоже была исправлена.

> -- Цитата:
> и следуя принципу максимальной простоты, т.е. автомата Калашникова и применив декомпозицию необходимость в ЦД исчезнет.
Примените, покажите. Убедиться в том, что два вложенных и тесно связанных цикла работают правильно, будет, думаю, труднее.