Entrada
- verbo , una cadena que coincide con la expresión regular
([a-pr-vyzıöüçğş]*[aeıioöuü][bcçdfgğhj-nprsştvyz]+|([a-pr-vyzıöüçğş]*[aeıioöuü]){2})(mak|mek)
- plural , un valor verdadero o falso
- persona , un número entero que tiene valor 1, 2 o 3
- tiempo , un número entero que tiene valor 1, 2 o 3
Salida
La forma conjugada del verbo turco verbo , en persona st / nd / rd persona, plural si es plural es TRUE
singular y si no lo es, en
- Si el tiempo es 1, el presente simple;
- Si el tiempo es 2, el presente continuo;
- Si el tiempo es 3, el futuro.
Reglas
Los verbos turcos se conjugan en tres elementos, que están en orden:
- El tallo , formado al eliminar
mak
omek
desde el final del infinitivo; El signo del tiempo , que es:
Por el presente simple:
- -r si la raíz termina en una vocal;
- -ir según las reglas de armonía vocal (ver más abajo) si la raíz contiene más de una sílaba (es decir, vocal), o es de uno de los siguientes verbos irregulares: almak, bilmek, bulmak, durmak, gelmek, görmek, kalmak, olmak, ölmek, sanmak, vermek, varmak, vurmak ;
- -er de acuerdo con las reglas de armonía vocal si la raíz contiene una sílaba y no se encuentra en los verbos irregulares anteriores.
Para el presente continuo, -iyor , donde i cambia de acuerdo con las reglas de armonía vocal . Los tallos que terminan en una vocal caen esta vocal antes de agregar este sufijo, con lo cual el sufijo armoniza con la penúltima vocal de la palabra (garantizada por la expresión regular).
- Para el futuro:
- -ecek según las reglas de armonía vocal si la raíz termina en una consonante;
- -yecek según las reglas de armonía de las vocales si la raíz termina en una vocal.
El sufijo personal para indicar el ejecutante de la acción, en todos los casos de acuerdo con las reglas de armonía vocal :
|Singular|Plural| |---|--------|------| |1st| -im | -iz| |2nd| -sin |-siniz| |3rd| (none) | -ler|
La k final del tiempo futuro se convierte en ğ antes de -im y -iz , por lo que, por ejemplo
(almak, TRUE, 1, 3)
, cederíaalacağız
.
Reglas de armonía vocal
Las vocales turcas se dividen en dos grupos: atrás ( a ı o u
) y frente ( e i ö ü
) por el lugar donde se pronuncian en la boca. Los sufijos de una palabra cambian las vocales de acuerdo con las vocales de la raíz.
Todos los sufijos enumerados anteriormente que tienen i como vocal en su lugar usan:
- -ı si la última vocal antes del sufijo es
ı
oa
(ambas vocales están atrás y sin redondear); - -i si la última vocal antes del sufijo es
i
oe
(ambas vocales son frontales y no redondeadas; observe aquí la distinción del turco entre I con puntos y sin puntos ); - -u si la última vocal antes del sufijo es
u
oo
(ambas vocales son posteriores y redondeadas); o - -ü si la última vocal antes del sufijo es
ü
oö
(ambas vocales son frontales y redondeadas).
Tome nota cuidadosa del presente sufijo continuo -yor . El i
armoniza, pero el o
no cambia. Los sufijos personales armonizarán así con el o
.
Todos los sufijos enumerados anteriormente que tienen e como vocal usan en su lugar:
- -e si la última vocal antes del sufijo es una vocal frontal; o
- -a si la última vocal antes del sufijo es una vocal inversa.
Verbos irregulares
Los verbos gitmek , tatmak , ditmek , gütmek y etmek cambian la final t
a a d
antes de cualquier final que comience con una vocal (que incluye todas las terminaciones en este desafío). Cualquier verbo que termine en -etmek también cambia el t
a a d
, y agrega -er para el presente simple (aunque esto no es así para los otros verbos).
Casos de prueba
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
fuente
-etmek
regla?Respuestas:
Javascript (ES6),
466456451446 bytesUnofofled y comentado
Casos de prueba
fuente
d
mutación en todos los verbos que terminan en -etmek ? No conozco JavaScript, pero por lo que puedo deducir, parece que se ha agrupado con los demás.sed, 583 bytes
Al igual que mi respuesta a la pregunta del hexámetro Dactylic estrechamente relacionado , esto realmente solo está traduciendo las reglas como se dan en expresiones regulares.
Uso:
Toma entrada en el formulario:
Entonces los casos de prueba son:
Descompostura:
Resultados para casos de prueba:
fuente
sed -E ''
, ya que especificó sed como el idioma y no como bash, así que considere el script como código fuente de sed. Luego puede ejecutarlo como:printf ...|sed -Ef filename
agregando 1 byte más para la bandera E, ahorrando 8 bytes al final. Por cierto, nunca supe hasta hoy que -E es equivalente a -r!