Nhà ngôn ngữ học đãng trí


10

Lý lịch

Bạn của bạn, một nhà ngôn ngữ học, đã ghi lại và phân tích một số đoạn hội thoại đơn giản bằng nhiều ngôn ngữ khác nhau. Khá lơ đãng, họ đã quên ngôn ngữ của từng đoạn. Bạn phải giúp họ bằng cách tạo một chương trình phân tích cấu trúc câu và loại trừ các trường hợp không thể.

Đầu vào

Đầu vào của bạn là một chuỗi không trống chứa các ký tự SVO, viết tắt của chủ ngữ , động từđối tượng . Nó đại diện cho một đoạn hội thoại được phân tích bởi nhà ngôn ngữ học.

Đầu ra

Nhiệm vụ của bạn là chia chuỗi thành các câu và nhập một khoảng thời gian .sau mỗi câu. Một câu chứa một động từ, HOẶC một động từ và một chủ đề, HOẶC một động từ, một chủ đề và một đối tượng. Tuy nhiên, bạn không biết từ nào mà ngôn ngữ gốc sử dụng; Tiếng Anh sử dụng chủ ngữ-động từ-đối tượng , nhưng các ngôn ngữ khác, như tiếng Latinh, sử dụng chủ ngữ-đối tượng-động từ . Trong thực tế, tất cả sáu hoán vị tồn tại trong các ngôn ngữ tự nhiên, vì vậy bạn phải kiểm tra từng trong số chúng.

Đầu ra của bạn sẽ chứa, trong một chuỗi được phân tách bằng dòng mới, mỗi thứ tự từ có thể áp dụng, dấu hai chấm :và chuỗi đầu vào được chia thành các câu theo thứ tự đó. Nếu chuỗi không thể được phân tích cú pháp theo một số thứ tự từ, dòng tương ứng sẽ bị bỏ qua. Thứ tự của các dòng không quan trọng, và nó được đảm bảo rằng ít nhất một thứ tự từ có thể được phân tích cú pháp.

Thí dụ

Xem xét đầu vào

VSVOSV

Theo VOSthứ tự, snipped có thể được phân tích cú pháp như VS.VOS.V., và theo SVOthứ tự, nó có thể được phân tích cú pháp như V.SVO.SV.. Thứ tự OSVcũng hoạt động, và đầu ra đầy đủ là

VOS:VS.VOS.V.
SVO:V.SVO.SV.
OSV:V.SV.OSV.

Quy tắc và tính điểm

Bạn có thể viết một chương trình đầy đủ hoặc một chức năng. Số byte thấp nhất sẽ thắng và các sơ hở tiêu chuẩn không được phép. Biểu thức thông thường và tất cả các phần dựng sẵn được cho phép.

Các trường hợp thử nghiệm

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.

Tôi biết rằng tôi nên triển khai tính năng hoán vị chuỗi vào Japt một giờ trước ...
Sản phẩm ETH

Câu trả lời:


1

Perl 5 - 104 byte

$a=<>;for(qw/VSO VOS SVO OVS SOV OSV/){$s=s/O//r;print"$_:".$a=~s/($_|$s|V)/$1./gr if$a=~/^($_|$s|V)*$/}

1

JavaScript (ES7), 172 byte

x=>[for(i of"V(SO?)?0V(O?S)?0(SVO?|V)0(O?VS|V)0(SO?)?V0(O?S)?V".split(0))if((y=x.match(RegExp(i,"g"))).join``==x)i.match(/\w/g).slice(0,3).join``+":"+y.join`.`+"."].join`
`

Có lẽ có thể được chơi golf hơn nữa. Đề nghị chào mừng!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.