PRM, semestr letni 2002

ćwiczenie 13

przykładowy konspekt: problemy rekurencyjne cd.


Rozważmy proste wyrażenia regularne, będące ciągami znaków alfanumerycznych, w których znak '*' oznacza ciąg znaków o dowolnej długości (również o długości 0), zaś '?' oznacza dowolny znak. Pozostałe znaki oznaczają same siebie. Wyraz pasuje do wyrażenia regularnego, jeśli w miejsce znaków specjalnych '?' '*' da się podstawić takie znaki lub ciągi znaków, że uzyska się ten właśnie wyraz.
Przykładowo, do wyrażenia a*a*a pasują wyrazy
aaa
alalala
anakonda
natomiast nie pasują wyrazy
a
bababa
ababab
Napisać program, który przyjmuje jako argument wywołania wyrażenie regularne i działa jak filtr: na standardowe wyjście przepuszcza jedynie te wyrazy ze standardowego wejścia, które pasują do wzorca podanego jako argument wywołania. Wskazówka: skorzystać z rekurencji. Można się posłużyć załączonym plikiem .


Powodzenia!