Vývojáři rádi píšou kód v editoru, který jim pomáhá nedělat tolik syntaktických chyb. Nejčastěji se setkáme s kontrolou dvojic závorek nebo html tagů, kde editor kontroluje, že blok začíná stejným tagem jako končí. Napište program, který přijímá řetězec znaků, vyhodnocuje pravidla níže a na výstup vypíše "ano" nebo "ne" (jestli je řetězec vyvážený nebo ne).
Pravidla:
-
Závorky patří do množiny znaků
{, }, [, ], (, ).
- Prázdný řetězec je vyvážený.
A
je vyvážený řetězec -[A], {A}, (A)
jsou vyvážené, pokudA
je vyvážené
Příklad:
- Vstup:
(abc[[d]e]fe, {c})
- Výstup: ano
- Vstup:
[poo[s)foo]
- Výstup: ne
Co se touto úlohou naučím a o čem si něco přečíst?
- Rozdíl mezi regulárními výrazy a bezkontextovou gramatikou.
- Rekurze a datová struktura Zásobník.
Úroveň znalostí
Začátečník