Contexte
Votre ami, un linguiste, a enregistré et analysé quelques extraits de conversation simples dans différentes langues. Étant assez distraits, ils ont oublié dans quelle langue se trouvait chaque extrait. Vous devez les aider en créant un programme qui analyse les structures des phrases et exclut les cas impossibles.
Contribution
Votre entrée est une chaîne non vide contenant les caractères SVO
, qui représentent le sujet , le verbe et l' objet . Il représente un extrait de conversation analysé par le linguiste.
Production
Votre tâche consiste à diviser la chaîne en phrases et à saisir un point .
après chaque phrase. Une phrase contient soit un verbe, OU un verbe et un sujet, OU un verbe, un sujet et un objet. Cependant, vous ne savez pas quel ordre de mots la langue d'origine utilise; L'anglais utilise le sujet-verbe-objet , mais d'autres langues, comme le latin, utilisent le sujet-objet-verbe . En fait, les six permutations existent dans les langues naturelles, vous devez donc vérifier chacune d'elles.
Votre sortie doit contenir, dans une chaîne séparée par des sauts de ligne, chaque ordre de mots applicable, deux points :
et la chaîne d'entrée divisée en phrases selon cet ordre. Si la chaîne ne peut pas être analysée dans un certain ordre de mots, la ligne correspondante doit être omise. L'ordre des lignes n'a pas d'importance et il est garanti qu'au moins un ordre de mots peut être analysé.
Exemple
Considérez l'entrée
VSVOSV
Dans l' VOS
ordre, le fragmenté peut être analysé en tant que VS.VOS.V.
, et dans l' SVO
ordre, il peut être analysé en tant que V.SVO.SV.
. L'ordre OSV
fonctionne également et la sortie complète est
VOS:VS.VOS.V.
SVO:V.SVO.SV.
OSV:V.SV.OSV.
Règles et notation
Vous pouvez écrire un programme complet ou une fonction. Le nombre d'octets le plus bas gagne et les failles standard sont interdites. Les expressions régulières et tous les intégrés sont autorisés.
Cas de test
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.