Diberikan input dari kata kerja Spanyol dalam bentuk infinitifnya, mengeluarkan kata kerja terkonjugasi dalam semua 6 bentuk indikatif yang tidak sempurna.
Untuk mengkonjugasikan infinitif dalam imperfect, hapus akhir infinitif (-ar, -er, -ir, dan kadang-kadang) dan tambahkan akhiran tidak sempurna yang tercantum di bawah ini. Ada tiga kata kerja tidak beraturan dalam imperfect, juga tercantum di bawah ini.
Verb ending Replace with...
--------------------------------------------------------
-ar -aba, -abas, -aba, -ábamos, -abais, -aban
-er, -ir, -ír -ía, -ías, -ía, -íamos, -íais, -ían
Irreg. verb Conjugations
--------------------------------------------------------
ser era, eras, era, éramos, erais, eran
ver veía, veías, veía, veíamos, veíais, veían
ir iba, ibas, iba, íbamos, ibais, iban
Untuk keperluan tantangan ini, gunakan huruf kapital alih-alih huruf beraksen (á menjadi A, é menjadi E, dan í menjadi I). Ini hanya karena huruf beraksen 2 byte dalam UTF-8, tetapi mereka dapat berbeda dalam pengkodean lainnya, dan saya lebih suka tidak harus berurusan dengan semua itu dan tetap dalam ASCII yang dapat dicetak sebagai gantinya.
Kata kerja infinitif akan selalu terdiri dari tiga atau lebih karakter dengan satu-satunya pengecualian dari kata kerja ir , tidak akan pernah mengandung huruf beraksen dengan pengecualian kata kerja yang berakhiran -r, dan akan selalu diakhiri dengan baik -ar, -er, -ir, atau -Ir. Kata kerja refleksif tidak perlu ditangani.
Output dapat berupa string whitespace- / comma-separated (jadi mencetak setiap konjugasi ke STDOUT pada barisnya sendiri boleh-boleh saja) atau array / daftar / etc.
Karena ini kode-golf , kode terpendek dalam byte akan menang.
Kasus uji:
In Out
---------------------------------------------------------------
hablar hablaba hablabas hablaba hablAbamos hablabais hablaban
comer comIa comIas comIa comIamos comIais comIan
vivir vivIa vivIas vivIa vivIamos vivIais vivIan
sonreIr sonreIa sonreIas sonreIa sonreIamos sonreIais sonreIan
ser era eras era Eramos erais eran
ver veIa veIas veIa veIamos veIais veIan
ir iba ibas iba Ibamos ibais iban
sumber
Jawaban:
Retina ,
10082 byteCobalah online. Sayangnya, karena penggunaannya
$_
tidak mungkin untuk memodifikasi kode untuk menjalankan semua tes sekaligus, jadi Anda harus menyalin dalam kata kerja individual. Saya sedang mengerjakan fitur baru yang akan memungkinkan hal ini.Penjelasan
Kita mulai dengan memutar semua ujung yang tidak
ar
menjadiI
, asalkan input bukan kata kerja tidak beraturanir
. Yang membutuhkan perawatan dari-er
,-ir
,-ír
konjugasi, messes up kata kerja tidak teraturser
danver
(tapi memendek mereka dalam proses), dan daun hanyair
dan-ar
dengan Trailingr
.Jika kata masih berakhir
r
, kami gantikan dengan ab
. Kami sekarang telah membahas semua konjugasi standar serta kata kerja tidak beraturanir
.Ini memperbaiki kata kerja tidak beraturan
ver
yang telah diubah menjadivI
pada tahap pertama.Ini memperbaiki kata kerja tidak beraturan
ser
yang telah diubah menjadisI
pada tahap pertama. Sekarang kami telah memodifikasi semua batang yang mungkin dengan benar. Yang perlu dilakukan hanyalah menambahkan semua kemungkinan akhir, dan kemudian memperbaiki aksen untuk jamak orang pertama dalam beberapa kasus.Pertama kita menambahkan sebuah
a
ke batang, karena itu selalu menjadi bagian dari semua ujung.Ini menggunakan yang jarang terlihat
$_
yang memasukkan seluruh string ke dalam substitusi (terlepas dari apa yang cocok). Ini sebenarnya sangat berguna ketika menduplikasi string, sebagaimana adanya$`
dan$'
, yang juga cukup dihargai.Sebelum tahap ini, kita memiliki orang pertama tunggal dalam string. Kami sekarang menambahkan konjugasi lain, dengan mencocokkan ujung string dengan
$
dan membangun bentuk lain dengan menambahkan sufiks yang sesuai ke orang pertama tunggal.Akhirnya, kami memperbaiki aksen untuk orang pertama jamak jika berlaku. Ini hanya perlu dilakukan untuk vokal, dua karakter di depan
-amos
kecuali karakter di antaranyaI
. Jadi kami mencocokkan karakter tersebut dan kemudian menggunakan tahap transliterasi untuk mengonversi huruf kecil ke huruf besar. Ini memanfaatkan kelas karakter barul
danL
yang baru saya tambahkan kemarin. Mereka memperluas kea-z
danA-Z
masing - masing, sehingga fitur baru menyimpan 4 byte di sini.sumber
Python 3,
154232 byteMemperbaiki modal yang hilang dalam kata kerja tidak beraturan.
Tidak disatukan
sumber
Bima Sakti 1.6.2 , 281 byte
Nah itu butuh waktu sebentar! Sepertinya saya perlu menambahkan beberapa builtin, hehe ...
Pemakaian
Contohnya
sumber
Ruby,
151149Biasanya, saya akan memilih baris baru daripada titik koma di mana mungkin untuk kepentingan keterbacaan, tetapi karena tidak ada titik koma, ini adalah garis satu.
Fitur adalah penggunaan placeholder
31@
untuk vokal beraksen yang tergantung padaamos
akhir. Dengan demikian batang yang benar terbentuk, dan kemudian pengganti diganti untuk salah satueia
atauEIA
sesuaiAda beberapa penggunaan indeks array negatif di sini. Dengan demikian
n[-2]
mengacu pada karakter kedua hingga terakhir dari input, dann[0..-3]
mengacu pada input dengan 2 karakter terakhir dihapus (batang infinitif).Tidak digabungkan dalam program uji
sumber