sfondo
Il tuo amico, un linguista, ha registrato e analizzato alcuni semplici frammenti di conversazione in varie lingue. Essendo piuttosto distratti, hanno dimenticato la lingua in cui si trovava ogni frammento. Devi aiutarli creando un programma che analizzi le strutture delle frasi ed escluda casi impossibili.
Ingresso
L'input è una stringa non vuota contenente i caratteri SVO
, che rappresentano soggetto , verbo e oggetto . Rappresenta uno snippet di conversazione analizzato dal linguista.
Produzione
Il tuo compito è dividere la stringa in frasi e inserire un punto .
dopo ogni frase. Una frase contiene un verbo, O un verbo e un soggetto, O un verbo, un soggetto e un oggetto. Tuttavia, non sai quale ordine di parole utilizza la lingua originale; L'inglese usa soggetto-verbo-oggetto , ma altre lingue, come il latino, usano soggetto-verbo-oggetto . In effetti, tutte e sei le permutazioni esistono nei linguaggi naturali, quindi è necessario verificarne ognuna.
L'output deve contenere, in una stringa separata da una nuova riga, ogni ordine di parole applicabile, due punti :
e la stringa di input suddivisa in frasi in base a tale ordine. Se la stringa non può essere analizzata in un certo ordine di parole, la riga corrispondente deve essere omessa. L'ordine delle righe non ha importanza ed è garantito che almeno un ordine di parole possa essere analizzato.
Esempio
Considera l'input
VSVOSV
In VOS
ordine, lo snipped può essere analizzato come VS.VOS.V.
, e in SVO
ordine, esso può essere analizzato come V.SVO.SV.
. Anche l'ordine OSV
funziona e l'output completo è
VOS:VS.VOS.V.
SVO:V.SVO.SV.
OSV:V.SV.OSV.
Regole e punteggio
È possibile scrivere un programma completo o una funzione. Vince il conteggio di byte più basso e non sono consentite scappatoie standard. Sono consentite espressioni regolari e tutti i built-in.
Casi 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.