นักภาษาศาสตร์ที่ไม่มีจิตใจ


10

พื้นหลัง

เพื่อนของคุณนักภาษาศาสตร์ได้บันทึกและวิเคราะห์ตัวอย่างบทสนทนาง่ายๆในภาษาต่างๆ พวกเขาลืมไปแล้วว่ามีตัวอย่างภาษาอะไรบ้างคุณต้องช่วยพวกเขาด้วยการสร้างโปรแกรมที่วิเคราะห์โครงสร้างประโยคและกฏที่เป็นไปไม่ได้

อินพุต

ข้อมูลของคุณเป็นสตริงที่ไม่ว่างเปล่าที่มีตัวละครSVOซึ่งยืนสำหรับเรื่อง , คำกริยาและวัตถุ มันแสดงให้เห็นตัวอย่างการสนทนาการวิเคราะห์โดยนักภาษาศาสตร์

เอาท์พุต

งานของคุณคือการแบ่งสตริงออกเป็นประโยคและป้อนจุด.หลังจากแต่ละประโยค ประโยคมีทั้งคำกริยาคำกริยาและหัวเรื่องหรือคำกริยาหัวเรื่องและวัตถุ อย่างไรก็ตามคุณไม่ทราบว่าคำสั่งใดที่ภาษาต้นฉบับใช้ ภาษาอังกฤษใช้เรื่องกริยาวัตถุแต่ภาษาอื่น ๆ เช่นภาษาละตินใช้เรื่องวัตถุกริยา ในความเป็นจริงการเรียงสับเปลี่ยนทั้งหกนั้นมีอยู่ในภาษาธรรมชาติดังนั้นคุณต้องตรวจสอบแต่ละอัน

ผลลัพธ์ของคุณจะต้องประกอบด้วยสตริงที่คั่นด้วยการขึ้นบรรทัดใหม่แต่ละคำสั่งที่ใช้บังคับโคลอน:และสตริงอินพุตที่แบ่งออกเป็นประโยคตามลำดับนั้น หากไม่สามารถแยกสตริงได้ในลำดับของคำศัพท์บรรทัดที่เกี่ยวข้องจะถูกตัดออก ลำดับของบรรทัดไม่สำคัญและรับประกันได้ว่าคำสั่งอย่างน้อยหนึ่งคำสามารถแยกวิเคราะห์ได้

ตัวอย่าง

พิจารณาอินพุต

VSVOSV

ในVOSการสั่งซื้อ snipped สามารถแยกวิเคราะห์เป็น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.

ฉันรู้ว่าฉันควรใช้คุณสมบัติการเปลี่ยนรูปแบบสตริงใน Japt ชั่วโมงที่ผ่านมา ...
ETHproductions

คำตอบ:



1

JavaScript (ES7), 172 ไบต์

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`
`

อาจจะเล่นกอล์ฟต่อไป ยินดีต้อนรับข้อเสนอแนะ!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.