fundo
Seu amigo, um linguista, gravou e analisou alguns trechos de conversas simples em vários idiomas. Sendo bastante distraídos, eles esqueceram em qual idioma cada trecho estava. Você deve ajudá-los criando um programa que analise as estruturas das frases e exclua casos impossíveis.
Entrada
Sua entrada é uma sequência não vazia que contém os caracteres SVO
, que representam sujeito , verbo e objeto . Representa um trecho de conversa analisado pelo linguista.
Resultado
Sua tarefa é dividir a sequência em frases e inserir um ponto .
após cada frase. Uma frase contém um verbo, OU um verbo e um assunto, OU um verbo, um assunto e um objeto. No entanto, você não sabe qual ordem de palavras o idioma original usa; O inglês usa sujeito-verbo-objeto , mas outras línguas, como o latim, usam sujeito-objeto-verbo . De fato, todas as seis permutações existem em idiomas naturais, portanto, você deve verificar cada uma delas.
Sua saída deve conter, em uma sequência separada por nova linha, cada ordem de palavras aplicável, dois pontos :
e a sequência de entrada dividida em frases de acordo com essa ordem. Se a sequência não puder ser analisada em alguma ordem de palavras, a linha correspondente será omitida. A ordem das linhas não importa e é garantido que pelo menos uma ordem de palavras possa ser analisada.
Exemplo
Considere a entrada
VSVOSV
Na VOS
ordem, o recorte pode ser analisado como VS.VOS.V.
e, na SVO
ordem, pode ser analisado como V.SVO.SV.
. O pedido OSV
também funciona e a saída total é
VOS:VS.VOS.V.
SVO:V.SVO.SV.
OSV:V.SV.OSV.
Regras e pontuação
Você pode escrever um programa completo ou uma função. A menor contagem de bytes vence e as brechas padrão não são permitidas. Expressões regulares e todos os incorporados são permitidos.
Casos de teste
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.