Срок выполнения задания:
За основу берем пример реализации ДКА
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace fans
{
public class State
{
public string Name;
public Dictionary<char, State> Transitions;
public bool IsAcceptState;
}
public class FA
{
public static State a = new State()
{
Name = "a",
IsAcceptState = false,
Transitions = new Dictionary<char, State>()
};
public State b = new State()
{
Name = "b",
IsAcceptState = false,
Transitions = new Dictionary<char, State>()
};
public State c = new State()
{
Name = "c",
IsAcceptState = true,
Transitions = new Dictionary<char, State>()
};
State InitialState = a;
public FA()
{
a.Transitions['0'] = a;
a.Transitions['1'] = b;
b.Transitions['0'] = c;
b.Transitions['1'] = a;
c.Transitions['0'] = b;
c.Transitions['1'] = c;
}
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 если в конце финальное состояние
}
}
class Program
{
static void Main(string[] args)
{
String s = "0000010111";
FA fa = new FA();
bool? result = fa.Run(s);
Console.WriteLine(result);
}
}
}Разработать класс ДКА, который допускает бинарную строку, содержащую ровно один '0' и хотя бы одну '1'.
Класс должен называться FA1
Разработать класс ДКА, который допускает бинарную строку, содержащую нечетное количество символов '0' и нечетное количество символов '1'.
Класс должен называться FA2
Разработать класс ДКА, который допускает бинарную строку, содержащую '11'.
Класс должен называться FA3
Добавить модульные тесты, чтобы общее количество было не менее 20 штук
- fa/program.cs - файл с реализацией классов FA1, FA2, FA3
- fa.Tests/UnitTest1.cs - файл с модульными тестами.