Решение есть (около 50 строк кода), но
- плохо читается - много квадратных скобок
- не очень понятно, что делается
Для перебора клеток использовался while вместо "привычного двойного цикла" - это сделано сознательно, для упрощения перехода к различным вариантам обхода таблицы (что будет сделано в следующих примерах)
Было решено переписать программы "для словарей". При этом
- Таблица с данными и таблица запретов при чтении заносятся в словари
(словарь упрощает проверку на выход за пределы таблицы)
- Для храниения результатов также используются словари
(в них будем заносить только "достижимые" клетки)
- Обход клеток оставим без изменений
Для начала объединим чтение из файлов и заполнение словаря (для Таблицы) и множест (для Запретов) в одну программу