Dada a entrada de um verbo espanhol em sua forma infinitiva, produza o verbo conjugado em todas as 6 formas do indicativo imperfeito.
Para conjugar um infinitivo no imperfeito, remova a desinência infinitiva (-ar, -er, -ir e algumas vezes -ír) e adicione as desinências imperfeitas listadas abaixo. Existem três verbos irregulares no imperfeito, também listados abaixo.
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 os propósitos deste desafio, use letras maiúsculas em vez de letras acentuadas (á se torna A, é se torna E e i se torna I). Isso ocorre apenas porque as letras acentuadas têm 2 bytes em UTF-8, mas elas podem ser diferentes em outras codificações, e eu prefiro não ter que lidar com nada disso e permanecer no ASCII imprimível.
Os verbos infinitivos sempre terão três ou mais caracteres, com a única exceção do verbo ir , nunca conterão letras acentuadas, com exceção dos verbos que terminam em -ír e sempre terminam em -ar, -er, -ir, ou -ír. Os verbos reflexivos não precisam ser manuseados.
A saída pode estar na forma de uma cadeia de caracteres separada por espaço em branco / vírgula (portanto, imprimir cada conjugação em STDOUT em sua própria linha é aceitável) ou um array / lista / etc.
Como esse é o código-golfe , o código mais curto em bytes vence.
Casos de teste:
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
fonte
Respostas:
Retina ,
10082 bytesExperimente online. Infelizmente, devido ao uso
$_
, não é possível modificar o código para executar todos os testes de uma só vez; portanto, você precisará copiar os verbos individuais. Estou trabalhando em um novo recurso que tornará isso possível.Explicação
Começamos transformando todas as terminações que não estão
ar
dentroI
, desde que a entrada não seja o verbo irregularir
. Que cuida do-er
,-ir
,-ír
conjugações, mexe-se os verbos irregularesser
ever
(mas encurta-los no processo), e deixa apenasir
e-ar
com uma fugar
.Se a palavra ainda terminar
r
, substituí-la por ab
. Agora, cobrimos todas as conjugações padrão, bem como o verbo irregularir
.Isso corrige o verbo irregular
ver
que foi transformadovI
no primeiro estágio.Isso corrige o verbo irregular
ser
que foi transformadosI
no primeiro estágio. Agora, modificamos todas as hastes possíveis corretamente. Tudo o que resta a fazer é anexar todos os finais possíveis e, em alguns casos, fixar o sotaque da primeira pessoa do plural.Primeiro, anexamos um
a
ao radical, porque isso sempre faz parte de todos os finais.Isso faz uso do raramente visto,
$_
que insere toda a cadeia na substituição (independentemente do que foi correspondido). Isso é realmente muito útil ao duplicar strings, como são$`
e$'
, que também são bastante subestimadas.Antes deste estágio, temos a primeira pessoa do singular na string. Agora, anexamos as outras conjugações, combinando o final da string com
$
e construindo as outras formas, anexando os sufixos apropriados à primeira pessoa do singular.Finalmente, fixamos o sotaque da primeira pessoa do plural, se aplicável. Isso só precisa ser feito para uma vogal, dois caracteres na frente do, a
-amos
menos que o caractere intermediário sejaI
. Então, combinamos esse caractere e usamos um estágio de transliteração para converter letras minúsculas em maiúsculas. Isso faz uso das novas classes de personagensl
eL
que eu adicionei apenas ontem. Eles se expandem paraa-z
eA-Z
respectivamente, para que o novo recurso salve 4 bytes aqui.fonte
Python 3,
154232 bytesCorrigidas as maiúsculas ausentes em verbos irregulares.
Ungolfed
fonte
Via Láctea 1.6.2 , 281 bytes
Bem, isso levou algum tempo! Parece que eu preciso adicionar alguns builtins, hehe ...
Uso
Exemplos
fonte
Ruby,
151149Normalmente, escolherei uma nova linha em vez de um ponto e vírgula, sempre que possível, no interesse da legibilidade, mas como não há ponto e vírgula, esse é um argumento único.
Um recurso é o uso de espaços reservados
31@
para as vogais acentuadas que dependem dosamos
finais. Assim, a haste correta é formada e, em seguida, o espaço reservado é substituído por umeia
ouEIA
conforme apropriadoExistem alguns usos de índices de matriz negativos aqui. Portanto,
n[-2]
refere-se ao penúltimo e último caractere da entrada en[0..-3]
refere-se à entrada com os 2 últimos caracteres removidos (o tronco infinitivo).Ungolfed in program program
fonte