как эту схеиму перевести в код. Это DFA ( Детерминированные конечные автоматы )
Смотрите.
Для начала, вам нужно построить класс, описывающий состояние DFA. Что в нём есть? Список переходов, плюс признак того, заключительное ли это состояние.
Переходы проще всего кодировать словарём, отображающим символ входного алфавита на новое состояние. Символы входного алфавита закодируем как char
.
Получаем:
class State
{
public string Name;
public Dictionary<char, State> Transitions;
public bool IsAcceptState;
}
(я добавил ещё и имя, хотя оно по сути не нужно).
Вам нужно создать узлы, и связать их в таблицу состояний. Узлы будут наподобие такого:
State q4 = new State()
{
Name = "Q4",
IsAcceptState = false,
Transitions = new Dictionary<char, State>()
{
['0'] = q2 // если приходит 0, переходим в состояние q2
}
};
(подумайте, как сделать так, чтобы первый узел мог ссылаться в таблице переходов на второй!)
Теперь, вам нужно определить класс для самого автомата, который содержит список состояний, и начальное состояние (это делайте сами, тут просто). Затем, что есть результат пробега DFA по строке? В конце мы либо оказываемся в финальном, либо в нефинальном состоянии. Ещё машина может остановиться, если перехода из какого-то состояние нет. Это удобно закодировать типом данных bool?
.
Сам код пробега (интерпретатор конечного автомата) получается очень простым.
public bool? Run(IEnumerable<char> s)
{
State current = InitialState;
foreach (var c in s) // цикл по всем символам
{
current = current.Transitions[c]; // меняем состояние на то, в которое у нас переход
if (current == null) // если его нет, возвращаем признак ошибки
return null;
// иначе переходим к следующему
}
return current.IsAcceptState; // результат true если в конце финальное состояние
}
Все части картины есть, собирайте!
Виртуальный выделенный сервер (VDS) становится отличным выбором
Надо разбить строку на поляПоля выделены кавычками (двойными или одинарными):
Пытаюсь возвратить значение JS функции на странице, загруженной в CEF браузере, используя метод EvaluateScriptAsyncПосетил десятки веб-страниц и документаций,...