Во время интервью кодирования я задал следующий вопрос:формальный подход для обработки текста
Написать программу, которая подсчитывает количество слов и строк во входном потоке.
Предположим, у вас есть читатель с методом nextChar().
На первый взгляд это выглядит просто. Но тогда вы понимаете, что вам нужно обрабатывать множество состояний, как:
- последовательное слово/линия разделители
- разного истекшее слова условия - слова разделителей или разделитель строки или EOF
- новая строка, которая начинается со словами сепараторов
- и т.д.
на интервью я придумал sortof код с спагетти многие, если-то еще и флаги.
Но я думаю, что для такого рода проблем должен быть формальный подход, который позволяет гарантировать, что вы обрабатываете все возможные случаи и которые могут дать структурированное решение.
Я думаю, что это может быть что-то либо из теории автоматов, либо из теории компиляторов (я никогда не делал глубокого погружения в любую из этих двух областей раньше).
Итак, если вы признаете определенный тип проблемы в вышеприведенной проблеме или знаете, какая теория охватывает такие проблемы, пожалуйста, дайте мне знать.
Мы предположили, что метод nextChar() возвращает символ UTF-8 или null, если EOF. – Roman