Memasukkan
- kata kerja , string yang cocok dengan ekspresi reguler
([a-pr-vyzıöüçğş]*[aeıioöuü][bcçdfgğhj-nprsştvyz]+|([a-pr-vyzıöüçğş]*[aeıioöuü]){2})(mak|mek)
- jamak , nilai yang benar atau salah
- orang , bilangan bulat memiliki nilai 1, 2, atau 3
- tense , bilangan bulat yang memiliki nilai 1, 2, atau 3
Keluaran
Bentuk terkonjugasi dari kata kerja Turki kerja , di orang st / nd / rd orang, jamak jika jamak adalah TRUE
dan tunggal jika tidak, di
- Jika tegang adalah 1, hadiah sederhana;
- Jika tegang adalah 2, hadiah yang berkelanjutan;
- Jika tegang adalah 3, masa depan.
Aturan
Kata kerja Turki dikonjugasikan dalam tiga elemen, yang berurutan:
- The batang , dibentuk dengan menghapus
mak
ataumek
dari akhir infinitive; The tanda tegang , yaitu:
Untuk hadiah sederhana:
- -r jika batang berakhir dengan vokal;
- -ir sesuai dengan aturan harmoni vokal (lihat di bawah) jika batang mengandung lebih dari satu suku kata (yaitu vokal), atau berasal dari salah satu kata kerja tidak beraturan berikut: almak, bilmek, bulmak, durmak, gelmek, görmek, kalmak, olmak, ölmek, sanmak, vermek, varmak, vurmak ;
- -er menurut aturan harmoni vokal jika batang mengandung satu suku kata dan tidak tercantum dalam kata kerja tidak beraturan di atas.
Untuk hadiah yang berkelanjutan, -iyor , di mana saya berubah sesuai dengan aturan harmoni vokal . Batang yang diakhiri dengan vokal menjatuhkan vokal ini sebelum menambahkan sufiks ini, di mana sufiks diselaraskan dengan vokal bersebelahan dengan kata terakhir (dijamin ada dengan ekspresi reguler).
- Demi masa depan:
- -ecek menurut aturan harmoni vokal jika batang berakhiran konsonan;
- -Yecek menurut aturan harmoni vokal jika batang berakhir dengan vokal.
The akhiran pribadi untuk menunjukkan pemain aksi, dalam semua kasus sesuai dengan aturan harmoni vokal :
|Singular|Plural| |---|--------|------| |1st| -im | -iz| |2nd| -sin |-siniz| |3rd| (none) | -ler|
Final k masa depan tegang menjadi ğ sebelum -im dan -iz , jadi misalnya
(almak, TRUE, 1, 3)
akan menghasilkanalacağız
.
Aturan harmoni vokal
Vokal bahasa Turki dibagi menjadi dua kelompok: belakang ( a ı o u
) dan depan ( e i ö ü
) di mana di dalam mulut mereka diucapkan. Sufiks kata ganti vokal sesuai dengan vokal root.
Semua sufiks yang tercantum di atas yang menjadikan saya sebagai vokal, gunakan:
- -ı jika vokal terakhir sebelum sufiks adalah
ı
ataua
(kedua vokal ini kembali dan tidak dikelilingi); - -i jika vokal terakhir sebelum sufiks adalah
i
ataue
(kedua vokal ini di depan dan di luar; perhatikan di sini perbedaan bahasa Turki antara bertitik dan tanpa titik I ); - -u jika vokal terakhir sebelum sufiks
u
atauo
(kedua vokal ini kembali dan bulat); atau - -ü jika vokal terakhir sebelum sufiks
ü
atauö
(kedua vokal ini di depan dan bulat).
Perhatikan baik-baik sufiks kontinu saat ini -iyor . The i
selaras, tetapi o
tidak berubah. Sufiks pribadi akan diselaraskan dengan o
.
Semua sufiks yang tercantum di atas yang memiliki e sebagai vokal, gunakan:
- -e jika vokal terakhir sebelum sufiks adalah vokal depan; atau
- -a jika vokal terakhir sebelum sufiks adalah vokal belakang.
Kata kerja tak beraturan
Kata kerja gitmek , tatmak , ditmek , gütmek , dan etmek perubahan final t
ke d
sebelum ujung yang dimulai dengan vokal (yang mencakup semua ujung dalam tantangan ini). Kata kerja apa pun yang berakhiran -etmek juga mengubah t
ke d
, dan menambahkan -er untuk hadiah sederhana (meskipun ini tidak demikian untuk kata kerja lainnya).
Uji kasus
gütmek, FALSE, 1, 2 -> güdüyorum
almak, TRUE, 3, 3 -> alacaklar
boğmak, TRUE, 2, 1 -> boğarsınız
ölmek, FALSE, 3, 1 -> ölür
boyamak, TRUE, 1, 2 -> boyuyoruz
affetmek, FALSE, 2, 1 -> affedersin
söylemek, TRUE, 3, 1 -> söylerler
söylemek, FALSE, 3, 2 -> söylüyor
söylemek, FALSE, 1, 3 -> söyleyeceğim
sumber
-etmek
aturan tersebut?Jawaban:
Javascript (ES6),
466456451446 byteUngofled dan berkomentar
Uji kasus
sumber
d
-mutasi pada semua kata kerja yang berakhiran -etmek ? Saya tidak tahu JavaScript, tetapi dari apa yang bisa saya kumpulkan sepertinya hanya disatukan dengan yang lain.sed, 583 bytes
Seperti jawaban saya untuk pertanyaan Hexameter Dactylic yang terkait erat , ini benar-benar hanya menerjemahkan aturan yang diberikan ke dalam ekspresi reguler.
Pemakaian:
Mengambil input dalam bentuk:
Jadi kasus uji adalah:
Kerusakan:
Hasil untuk kasus uji:
sumber
sed -E ''
, karena Anda menetapkan sed sebagai bahasa dan bukan bash, jadi anggap skrip sebagai kode sumber sed. Anda kemudian dapat menjalankannya sepertiprintf ...|sed -Ef filename
:, menambahkan 1 byte lebih untuk bendera E, menghemat 8 byte pada akhirnya. Btw, tidak pernah tahu sampai hari ini bahwa -E setara dengan -r!