Latar Belakang
Teman Anda, ahli bahasa, telah merekam dan menganalisis beberapa cuplikan percakapan sederhana dalam berbagai bahasa. Karena cukup linglung, mereka lupa bahasa apa yang digunakan oleh setiap cuplikan. Anda harus membantu mereka dengan membuat program yang menganalisis struktur kalimat dan mengesampingkan kasus-kasus yang tidak mungkin.
Memasukkan
Input Anda adalah string kosong yang berisi karakter SVO
, yang merupakan subjek untuk subjek , kata kerja , dan objek . Ini mewakili cuplikan percakapan yang dianalisis oleh ahli bahasa.
Keluaran
Tugas Anda adalah memecah string menjadi kalimat, dan memasukkan periode .
setelah setiap kalimat. Sebuah kalimat mengandung kata kerja, ATAU kata kerja dan subjek, ATAU kata kerja, subjek dan objek. Namun, Anda tidak tahu urutan kata yang digunakan bahasa asli; Bahasa Inggris menggunakan subjek-kata kerja-objek , tetapi bahasa lain, seperti Latin, menggunakan subjek-objek-kata kerja . Faktanya, keenam permutasi ada dalam bahasa alami, jadi Anda harus memeriksa masing-masing.
Output Anda akan berisi, dalam string yang dipisahkan baris baru, setiap urutan kata yang berlaku, titik dua :
, dan string input dipecah menjadi kalimat sesuai dengan urutan itu. Jika string tidak dapat diuraikan dalam beberapa urutan kata, baris yang sesuai harus dihilangkan. Urutan baris tidak masalah, dan dijamin bahwa setidaknya satu urutan kata dapat diuraikan.
Contoh
Pertimbangkan inputnya
VSVOSV
Dalam VOS
urutan, potongan dapat diuraikan sebagai VS.VOS.V.
, dan dalam SVO
urutan, dapat diurai sebagai V.SVO.SV.
. Urutannya OSV
juga berfungsi, dan output penuhnya adalah
VOS:VS.VOS.V.
SVO:V.SVO.SV.
OSV:V.SV.OSV.
Aturan dan penilaian
Anda dapat menulis program atau fungsi lengkap. Hitungan byte terendah menang, dan celah standar tidak diizinkan. Ekspresi reguler dan semua bawaan diizinkan.
Uji kasus
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.
Jawaban:
Perl 5 - 104 byte
sumber
JavaScript (ES7), 172 byte
Mungkin bisa bermain golf lebih lanjut. Saran diterima!
sumber