MOG Round #33Ended |
Definimos un patrón como una secuencia de letras minúsculas en inglés, y caracteres $\texttt{`*'}$ y $\texttt{`?'}$.
Digamos que una cadena $s$ se ajusta a un patrón $a$ si es posible reemplazar los caracteres $\texttt{`*'}$ en $a$ con varias (posiblemente ninguna) letras minúsculas en inglés, y los caracteres $\texttt{`?'}$ con una sola letra minúscula en inglés de forma tal que podamos obtener la cadena $s$ (por ejemplo, la cadena $\texttt{"matcom"}$ se ajusta al patrón $\texttt{"m*a?*m"}$).
Diremos que un patrón $c$ es una integración de dos patrones $a$ y $b$ si se cumplen las siguientes condiciones:
1. Si una cadena $s$ se ajusta a $a$ o $b$, entonces $s$ debe ajustarse a $c$.
2. $c$ debe contener la mínima cantidad posible de caracteres $\texttt{`*'}$.
3. Entre todos los patrones que satisfacen las condiciones anteriores, $c$ debe ser uno de los más largos.
4. Entre todos los patrones que satisfagan las condiciones anteriores, $c$ debe contener el número mínimo posible de $\texttt{`?'}$.
Dado un patrón $a$ y otro $b$, buscar cualquier patrón que sea una integración.