tło
Twój przyjaciel, językoznawca, nagrał i przeanalizował kilka prostych fragmentów rozmowy w różnych językach. Będąc całkowicie roztargnionymi, zapomnieli, w jakim języku znajduje się każdy fragment kodu. Musisz im pomóc, tworząc program analizujący struktury zdań i wykluczający niemożliwe przypadki.
Wejście
Twoje dane wejściowe są niepustym ciągiem zawierającym znaki SVO
, które oznaczają podmiot , czasownik i obiekt . Reprezentuje fragment konwersacji analizowany przez językoznawcę.
Wynik
Twoim zadaniem jest podzielenie łańcucha na zdania i wprowadzenie kropki .
po każdym zdaniu. Zdanie zawiera albo czasownik, albo czasownik i temat, LUB czasownik, podmiot i przedmiot. Jednak nie wiesz, jakiej kolejności słów używa oryginalny język; Angielski używa podmiot-czasownik-przedmiot , ale inne języki, takie jak łacina, używają podmiot-czasownik-przedmiot . W rzeczywistości wszystkie sześć permutacji istnieje w językach naturalnych, więc musisz sprawdzić każdą z nich.
Twój wynik powinien zawierać, w ciągach rozdzielanych znakiem nowej linii, każdą odpowiednią kolejność słów, dwukropek :
i ciąg wejściowy podzielony na zdania zgodnie z tą kolejnością. Jeśli ciąg nie może zostać przeanalizowany w jakiejś kolejności słów, odpowiedni wiersz należy pominąć. Kolejność wierszy nie ma znaczenia i gwarantuje się, że można przeanalizować co najmniej jedną kolejność słów.
Przykład
Rozważ dane wejściowe
VSVOSV
W VOS
kolejności wycinek można przeanalizować jako VS.VOS.V.
, a w SVO
kolejności - jako V.SVO.SV.
. Kolejność OSV
również działa, a pełna moc wyjściowa to
VOS:VS.VOS.V.
SVO:V.SVO.SV.
OSV:V.SV.OSV.
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone. Wyrażenia regularne i wszystkie wbudowane są dozwolone.
Przypadki testowe
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.
Odpowiedzi:
Perl 5–104 bajtów
źródło
JavaScript (ES7), 172 bajty
Prawdopodobnie można by dalej grać w golfa. Sugestie mile widziane!
źródło