Gönüllü dilbilimci


10

Arka fon

Bir dilbilimci olan arkadaşınız, çeşitli dillerde basit konuşma snippet'lerini kaydetti ve analiz etti. Oldukça düşüncesiz oldukları için, her pasajın hangi dilde olduğunu unutmuşlar. Cümle yapılarını analiz eden ve imkansız vakaları dışlayan bir program oluşturarak onlara yardım etmelisiniz.

Giriş

Girişiniz , konu , fiil ve nesneSVO anlamına gelen karakterleri içeren boş olmayan bir dizedir . Dilbilimci tarafından analiz edilen bir konuşma snippet'ini temsil eder.

Çıktı

Göreviniz dizeyi cümlelere bölmek ve .her cümlenin ardından bir nokta girmek . Cümle ya bir fiil, VEYA bir fiil ve bir konu, VEYA bir fiil, bir konu ve bir nesne içerir. Ancak, orijinal dilin hangi kelime sırasını kullandığını bilmiyorsunuz; İngilizce konu-fiil nesnesi kullanır , ancak Latince gibi diğer diller konu-nesne fiilini kullanır . Aslında, altı permütasyonun hepsi doğal dillerde mevcuttur, bu yüzden her birini kontrol etmelisiniz.

Çıktınız, satırsonu ile ayrılmış bir dizede, geçerli her sözcük sırası, iki nokta üst üste :ve bu diziye göre cümlelere bölünmüş giriş dizesi içermelidir . Dize bir sözcük sırasıyla ayrıştırılamazsa, karşılık gelen satır atlanmalıdır. Satırların sırası önemli değildir ve en az bir kelime sırasının ayrıştırılabileceği garanti edilmektedir.

Misal

Girdiyi düşünün

VSVOSV

Gelen VOSsipariş, Kesik olarak çözümlenebilir VS.VOS.V.ve içinde SVOsırayla, o kadar çözümlenebilir V.SVO.SV.. Sipariş OSVde çalışır ve tam çıktı

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

Kurallar ve puanlama

Tam bir program veya işlev yazabilirsiniz. En düşük bayt sayısı kazanır ve standart boşluklara izin verilmez. Düzenli ifadelere ve tüm yerleşik öğelere izin verilir.

Test senaryoları

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'e bir saat önce bir dizi permütasyon özelliği uygulamam gerektiğini biliyordum ...
ETHproductions

Yanıtlar:


1

Perl 5-104 bayt

$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 bayt

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

Muhtemelen daha fazla golf olabilir. Öneriler hoş geldiniz!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.