filipg/amu_automata_2011 — Issue #99: Zaimplementować prosty rekurencyjny algorytm sprawdzania, czy automat niedeterministyczny akceptuje dany napis
Author: filipg
Created: 2011-10-19 06:17:15+00:00
State: open

Należy zaimplementować klasę `AutomatonByRecursion`, która będzie reprezentować "działający" niedeterministyczny automat skończenie stanowy (w przeciwieństwie do `AutomatonSpecification` reprezentującego "zawartość" automatu).

Klasa powinna mieć konstruktor postaci:

/**
* Tworzy "działający" automat na podstawie podanej specyfikacji automatu.
*/
AutomatonByRecursion(AutomatonSpecification specification);

(konstruktor powinien zapamiętywać specyfikację i potem się do niej odwoływać).

Klasa `AutomatonByRecursion` powinna implementować interfejs `Acceptor`, tzn. metoda sprawdzająca, czy automat akceptuje podany napis, powinna się nazywać `accepts`.

Implementacja *NIE* musi uwzględniać epsilon-przejść (powinna wyrzucać wyjątek przy napotkaniu epsilon-przejścia) - będzie to przedmiotem osobnego zadania.

Przy dłuższych napisach program może się kończyć przepełnieniem stosu - jest to akceptowalne.