Dada la entrada de un verbo español en su forma infinitiva, se obtiene el verbo conjugado en las 6 formas del imperfecto indicativo.
Para conjugar un infinitivo en lo imperfecto, elimine la terminación infinitiva (-ar, -er, -ir y, a veces, -ír) y agregue las terminaciones imperfectas que se enumeran a continuación. Hay tres verbos irregulares en el imperfecto, que también se enumeran a continuación.
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
Para los propósitos de este desafío, use letras mayúsculas en lugar de letras acentuadas (á se convierte en A, é se convierte en E e í se convierte en I). Esto es solo porque las letras acentuadas son de 2 bytes en UTF-8, pero pueden ser diferentes en otras codificaciones, y prefiero no tener que lidiar con nada de eso y permanecer en ASCII imprimible.
Los verbos infinitivos siempre tendrán tres o más caracteres de largo con la única excepción del verbo ir , nunca contendrán letras acentuadas con la excepción de los verbos que terminan en -ír, y siempre terminarán en -ar, -er, -ir, o -ír. Los verbos reflexivos no necesitan ser manejados.
La salida puede estar en forma de una cadena separada por comas / espacios en blanco (por lo que imprimir cada conjugación a STDOUT en su propia línea está bien) o una matriz / lista / etc.
Como esto es código golf , gana el código más corto en bytes.
Casos de prueba:
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
fuente
Respuestas:
Retina ,
10082 bytesPruébalo en línea. Desafortunadamente, debido al uso de
$_
no es posible modificar el código para ejecutar todas las pruebas a la vez, por lo que tendrá que copiar los verbos individuales. Sin embargo, estoy trabajando en una nueva característica que lo hará posible.Explicación
Comenzamos girando todas las terminaciones que no están
ar
dentroI
, siempre que la entrada no sea el verbo irregularir
. Que se encarga de la-er
,-ir
,-ír
conjugaciones, meta la pata de los verbos irregularesser
yver
(pero ellos se acorta en el proceso), y las hojas únicasir
y-ar
con un arrastrer
.Si la palabra todavía termina en
r
, reemplazamos eso con ab
. Ahora hemos cubierto todas las conjugaciones estándar, así como el verbo irregularir
.Esto corrige el verbo irregular
ver
que se ha convertidovI
en la primera etapa.Esto corrige el verbo irregular
ser
que se ha convertidosI
en la primera etapa. Ahora hemos modificado todos los tallos posibles correctamente. Todo lo que queda por hacer es agregar todas las terminaciones posibles, y luego arreglar el acento para la primera persona del plural en algunos casos.Primero agregamos un
a
a la raíz, porque eso siempre es parte de todas las terminaciones.Esto hace uso de lo que rara vez se ve,
$_
que inserta toda la cadena en la sustitución (independientemente de lo que coincida). En realidad, esto es muy útil cuando se duplican cadenas, como son$`
y$'
, que también se subestiman bastante.Antes de esta etapa, tenemos la primera persona del singular en la cadena. Ahora agregamos las otras conjugaciones, haciendo coincidir el final de la cadena con
$
y construyendo las otras formas agregando los sufijos apropiados a la primera persona del singular.Finalmente, arreglamos el acento para la primera persona del plural, si corresponde. Esto solo debe hacerse para una vocal, dos caracteres en frente de a
-amos
menos que el carácter intermedio seaI
. Así que combinamos un personaje así y luego usamos una etapa de transliteración para convertir minúsculas a mayúsculas. Esto hace uso de las nuevas clases de personajesl
yL
que solo agregué ayer. Se expanden aa-z
yA-Z
respectivamente, de modo que la nueva característica ahorra 4 bytes aquí.fuente
Python 3,
154232 bytesSe corrigieron las mayúsculas faltantes en verbos irregulares.
Sin golf
fuente
Vía Láctea 1.6.2 , 281 bytes
Bueno, eso tomó un tiempo! Parece que necesito agregar algunas incorporaciones, jeje ...
Uso
Ejemplos
fuente
Rubí,
151149Normalmente, elegiré una nueva línea sobre un punto y coma cuando sea posible en aras de la legibilidad, pero como no hay punto y coma, este es un trazador de líneas.
Una característica es el uso de marcadores de posición
31@
para las vocales acentuadas que dependen de lasamos
terminaciones. Por lo tanto, se forma el vástago correcto, y luego el marcador de posición se sustituye por unoeia
oEIA
según correspondaHay algunos usos de los índices de matriz negativos aquí. Por lo tanto, se
n[-2]
refiere al penúltimo carácter de la entrada y sen[0..-3]
refiere a la entrada con los últimos 2 caracteres eliminados (la raíz infinitiva).Sin golf en el programa de prueba
fuente