Wpis z mikrobloga

Dzisiaj trochę ambitniejsze zadanie od Facebooka.

Zaimplementuj wyrażenia regularne z następującymi specjalnymi znakami:
. (kropka) dopasowuje dowolny pojedynczy znak
x* (gwiazdka) dopasowuje zero lub więcej znaków x

Tj. zaimplementuj funkcję, która przyjmuje dwa argumenty: napis s oraz poprawne wyrażenie regularne r i zwraca prawdę wtedy i tylko wtedy, kiedy wyrażenie r całkowicie dopasowuje się do s.

np. dla s="Mirek" i r="M.rek" -> true
s="Mirek" i r=".*" -> true
s="Mirek" i r="Mirabella" -> false

#dailycodingproblem #programowanie
  • 28
  • Odpowiedz
pewnie trzeba pokombinować z substringami, startswith i endswith. Nie wydaje się bardzo skomplikowane, chociaż banalne tez nie jest.


@asunez: nie trzeba - to zadanie jest proste jeśli się wie (albo uczyło na studiach) co to są wyrażenia regularne i jak sie mają to automatów skończonych.
Ergo: trzeba skonstruować automat skończony
  • Odpowiedz
@NotABigFan: chyba najprosciej byloby przetranformowac automat nieskoczony na skonczony, pozniej powinno isc gladko. Z drugiej strony jakbym mial napisac cos takiego na rozmowie ( ͡° ʖ̯ ͡°)
  • Odpowiedz
@NotABigFan: ogólnie błąd jest gdy len(r) > len(s) powinno być proste do poprawki ale aktualnie nie mam czasu, zajmę się może jutro tym, dzięki za zadania, można sobie trochę zwoje mózgowe wyprostować( ͡° ͜ʖ ͡°)
  • Odpowiedz