[3,5] Kávovar

Máme hlučný kávovar. Podle toho, v jakém je zrovna stavu, umí vydávat celou škálu zvuků.

Kdosi zvuky pečlivě zapsal – pochopitelně bez oddělovačů, jako jeden dlouhý řetězec. Programu v této úloze má rozhodnout, zda může jít o zápis zvuků, které kávovar postupně vydával. Víme navíc, že na začátku i na konci záznamu byl kávovar vypnutý.

Přesně pro tenhle účel se hodí funkce re.fullmatch, která ale bohužel není dostupná tady na webu. Použít ji můžete, jen vám kód tady nepůjde otestovat. Alternativou je použít re.match a na konec regulárního výrazu napsat $.

Každý regulární výraz jde nakreslit taky jako stavový automat. Kdyby zvuky byly jednopísmenné, je to hezky přehledný automat. Jinak musíme každý přechod nahradit několika mezistavy.