Фон
Ваш друг, лингвист, записал и проанализировал несколько простых фрагментов разговора на разных языках. Будучи довольно рассеянными, они забыли, на каком языке был каждый фрагмент. Вы должны помочь им, создав программу, которая анализирует структуры предложений и исключает невозможные случаи.
вход
Ваш ввод - непустая строка, содержащая символы SVO
, обозначающие тему , глагол и объект . Он представляет собой фрагмент разговора, проанализированный лингвистом.
Вывод
Ваша задача - разбить строку на предложения и ввести точку .
после каждого предложения. Предложение содержит либо глагол, ИЛИ глагол и предмет, ИЛИ глагол, предмет и объект. Однако вы не знаете, какой порядок слов использует исходный язык; Английский язык использует субъект-глагол-объект , но другие языки, такие как латынь, используют субъект-глагол-объект . На самом деле все шесть перестановок существуют на естественных языках, поэтому вы должны проверить каждую из них.
Ваш вывод должен содержать в строке, разделенной символом новой строки, каждый применимый порядок слов, двоеточие :
и строку ввода, разбитую на предложения в соответствии с этим порядком. Если строка не может быть проанализирована в некотором порядке слов, соответствующая строка должна быть опущена. Порядок строк не имеет значения, и гарантируется, что хотя бы один порядок слов может быть проанализирован.
пример
Рассмотрим вход
VSVOSV
В VOS
заказе разбитый фрагмент может быть проанализирован как VS.VOS.V.
, а в SVO
порядке - как V.SVO.SV.
. Порядок OSV
также работает, и полный вывод
VOS:VS.VOS.V.
SVO:V.SVO.SV.
OSV:V.SV.OSV.
Правила и оценки
Вы можете написать полную программу или функцию. Побеждает меньшее количество байтов, и стандартные лазейки запрещены. Регулярные выражения и все встроенные модули разрешены.
Контрольные примеры
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.
Ответы:
Perl 5 - 104 байта
источник
JavaScript (ES7), 172 байта
Возможно, будет в гольф дальше. Предложения приветствуются!
источник