Antecedentes
Su amigo, un lingüista, ha grabado y analizado algunos fragmentos de conversación simples en varios idiomas. Al ser bastante distraídos, han olvidado en qué idioma estaba cada fragmento. Debes ayudarlos creando un programa que analice las estructuras de las oraciones y descarte casos imposibles.
Entrada
Su entrada es una cadena no vacía que contiene los caracteres SVO
, que representan sujeto , verbo y objeto . Representa un fragmento de conversación analizado por el lingüista.
Salida
Su tarea es dividir la cadena en oraciones e ingresar un punto .
después de cada oración. Una oración contiene un verbo, O un verbo y un sujeto, O un verbo, un sujeto y un objeto. Sin embargo, no sabe qué orden de palabras usa el idioma original; El inglés usa subject-verb-object , pero otros idiomas, como el latín, usan subject-object-verb . De hecho, las seis permutaciones existen en idiomas naturales, por lo que debe verificar cada una de ellas.
Su salida contendrá, en una cadena separada por una nueva línea, cada orden de palabras aplicable, dos puntos :
y la cadena de entrada dividida en oraciones de acuerdo con ese orden. Si la cadena no se puede analizar en algún orden de palabras, se omitirá la línea correspondiente. El orden de las líneas no importa, y se garantiza que se puede analizar al menos un orden de palabras.
Ejemplo
Considere la entrada
VSVOSV
En el VOS
orden, el recortado se puede analizar como VS.VOS.V.
, y en el SVO
orden, se puede analizar como V.SVO.SV.
. El orden OSV
también funciona, y la salida completa es
VOS:VS.VOS.V.
SVO:V.SVO.SV.
OSV:V.SV.OSV.
Reglas y puntaje
Puede escribir un programa completo o una función. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten. Se permiten expresiones regulares y todos los elementos integrados.
Casos de prueba
Input:
V
Output:
VSO:V.
VOS:V.
SVO:V.
OVS:V.
SOV:V.
OSV:V.
Input:
SVV
Output:
SVO:SV.V.
SOV:SV.V.
OSV:SV.V.
Input:
VSVOV
Output:
SVO:V.SVO.V.
Input:
VSOVS
Output:
VSO:VSO.VS.
OVS:VS.OVS.
Input:
SVOSV
Output:
SVO:SVO.SV.
OSV:SV.OSV.
Input:
VSVOSV
Output:
VOS:VS.VOS.V.
SVO:V.SVO.SV.
OSV:V.SV.OSV.
Input:
VSVVSOVSV
Output:
VSO:VS.V.VSO.VS.V.
OVS:VS.V.VS.OVS.V.
SOV:V.SV.V.SOV.SV.
Input:
SVVSVSOVSVV
Output:
SOV:SV.V.SV.SOV.SV.V.
Input:
VSOVSVSOVSVVS
Output:
VSO:VSO.VS.VSO.VS.V.VS.
OVS:VS.OVS.VS.OVS.V.VS.