Explicação
Hola! Para aqueles que não praticam espanhol, um verbo é conjugado com base na pessoa que executa a ação. Aqui está um gráfico:
English Spanish
I Yo
You Tú
He Él
She Ella
You (formal) Usted
We all Nosotros
You all Vosotros
They (masculine, plural) Ellos
They (feminine, plural) Ellas
You (plural) Ustedes
Em espanhol, todos os verbos terminam com ar
, er
ou ir
. Aqui está outro gráfico útil:
Ar Er Ir
Yo o o o
Tú as es es
Él a e e
Ella a e e
Usted a e e
Nosotros amos emos imos
Vosotros áis éis ís
Ellos an en en
Ellas an en en
Ustedes an en en
Dado um pronome e um verbo, imprima o verbo conjugado usando o pronome no tempo presente. Não se preocupe com a troca de hastes e verbos ímpares.
Exemplos
Input Output
Yo escribir Escribo
Tu enseñar Enseñas
Ella querer Quere (It should be quiere but ignore stem changes)
Se o seu idioma não suportar impressão com acentos, você poderá omiti-los. Caso contrário, não será necessário mais caracteres para usar á em vez de a em seu código.
Você pode encontrar mais palavras com as quais testar aqui: http://spanish.speak7.com/spanish_vocabulary_verbs.htm . Observe que o competidor deve ser contestar.
Desafio: Mudanças no Tronco
Em espanhol, alguns verbos têm alterações no radical. Vamos pegar o verbo, querer
por exemplo. Em todas as formas, exceto nosotros e vosotros , a primeira e
muda para ie
. Então yo quiero
, mas nosotros queremos
. Se o seu programa puder explicar alterações no tronco, você poderá subtrair o dobro da duração de cada palavra da sua pontuação final. Por exemplo, se você apoia somente a alteração i
-> , pode subtrair o dobro da duração ou 12 da sua pontuação.ie
querer
querer
querer
Para alguns verbos que mudam o radical, tente o seguinte: https://conjuguemos.com/chart.php?language=spanish&id=2&etre=no&commands=no&all=no&source=public
Bônus pequenos
Apenas por diversão, se você explicar o que seu código faz em espanhol, tire 30 da sua pontuação. Não use apenas o Google Tradutor ou poderei dizer que você trapaceou.
(Como eu não sou um falante nativo de espanhol, corrija-me se houver algum erro)
fonte
Respostas:
Python,
172168743 caracteres - 1796 bônus = -1053Atualizado para enfrentar o desafio de mudar de tronco.
Uso :
Teste em entradas que não mudam de tronco :
Exemplos de entrada com alteração de haste :
Faz tanto e-> ou seja, mudanças e / ou mudanças, evitando adequadamente os casos nostros + vostros:
Aqui está como o bônus foi determinado e a sequência de dados gerada, a partir da qual você pode deduzir os verbos nos quais trabalha:
Que dá:
fonte
.
s, gostaria de acrescentar 50 pts ou mais para a pontuaçãoten
na sua lista de raízes. teñir é e para i , não e para ie ; tener é e para ie , mas tem uma mudança de tronco irregular por 1s. Da mesma forma abstener , circunvenir , obtener , sostener , venir , cocer , destorcer , oler , retorcer , torcer . Por outro lado, seu script de pontuação não parece contar tanto sentar quantosentir . E você está perdendo uma.
nososegsosten
, edescontr
provavelmente deve serdescont
.tener
Acho que sim . Não sabia que os verbos que você listou tinham um caso especial. Eu posso removê-los ou explicá-los (o que for mais barato) e corrigir os erros se houver outro candidato pertoPython, 240 bytes - bônus (extremamente grande)
Saída de amostra:
Explicação:
Este código usa um site de conjugação gratuito existente ( http://www.conjugation.org/ ) que retorna várias conjugações de um grande banco de dados de verbos. Reduzi um pouco a URL usando um encurtador de URL on-line gratuito que permite que os parâmetros sejam transmitidos pelo redirecionamento ( http://smarturl.it/ ). Simplesmente faço uma solicitação HTTP com base no verbo especificado, retiro os acentos do
u
ee
na fonte, localizo o pronome no HTML usando expressões regulares e retorno a conjugação associada.É impossível dizer quantos verbos têm alterações no radical sem consultar o banco de dados inteiro em um dicionário. Provavelmente, é seguro assumir que o bônus negativo desse banco de dados é muito maior do que qualquer bônus das listas codificadas passadas (que aumentam o comprimento do código).
Obviamente, eu poderia ter lidado melhor com os caracteres acentuados, mas isso exigiria codificação / decodificação e manipulação extra nas expressões regulares.
fonte
re.sub
oustring.replace
quando não é necessário lidar com alterações no tronco, etc. A questão é falha.Freepascal, 218 caracteres -30 = 189
É uma decisão difícil de vencer a resposta python (original), especialmente com Pascal. Eu posso tentar melhorar amanhã, possivelmente com um conceito semelhante em um idioma diferente. Não enviarei uma resposta de mudança de radical, pois vejo isso como um desafio linguístico e não de programação.
Versão não destruída:
Explicação (em espanhol para o bônus -30 desde que você pediu)
o primer
copy
extra da raíz do verbo, definindo como parâmetros a string , o índice para empezar (no caso 1) e a letra das letras (no caso comprimento-2. ) O segundo extra na descrição.6*(7-pos(p[1],' yt v n')
avalie a segunda letra do pronome. Se pronome es él / ella (s / s) usado (s),pos
avalie um cero, como o valor dentro da parêntesis es 7.pos(v[length(v)-1],y
pesquise a última letra do infinitivo enamosemosimos
avanza 4 por cada tipo de verbo , formando um ciclo de 12. Oy
restante consiste em todas as desinencias. Se o logradouro intercalar separa as descrições para "você" e "você". Se houver embargo, haverá uma cantoria de espaço em branco que me deve eliminar. Como definir o índice para buscar a desinência em y.pos(p[length(p)],'u s')+1)
determinar o número de caracteres para imprimir. Si el pronombre não Terminais ens
ou
solo se Imprime un carácter. Esta regra suprime a segunda letra doan en en
caso de uma pessoa singular singular: él, ella, usted.Resultado
fonte
perl, 243 caracteres
Desta vez, com foco na pesquisa de hash. Estou bastante surpreso por não conseguir ficar menor.
E se a validação de entrada não for importante, 186 caracteres:
fonte
perl, 155 caracteres
Apenas um monte de expressões regulares desta vez. Você pode obter um código mais curto, reorganizando as coisas um pouco, para que o pronome venha após o verbo, já que nós realmente nos importamos com o final do verbo:
Parece que o acima é atualmente o vencedor do código que ignora o bônus.
fonte
Bash,
301309 (correção de bug)307299 incluindo novas linhasNão é ótimo em comparação com os outros por aí. Poderia ser melhorado.
Explora algumas coincidências convenientes.
A correção de bug não se baseia em nenhum verbo espanhol que tenha "ii" em nenhum lugar, devido à maneira como salva caracteres ao manipular vosotros com verbos -ir. Por favor, corrija-me se estiver errado.
Pressupõe entrada válida: o primeiro argumento é o pronome minúsculo, com os acentos necessários; o segundo argumento é o infinitivo do verbo. Nenhuma mudança de haste implementada. Produz o verbo conjugado, em minúsculas, sem acentos.
Explicado. `` é uma notação obscura para
$( )
, economizando um caractere.obter o verbo terminar
obter o primeiro caractere do verbo terminar
obter o verbo stem
Haste de verbos + o. $ o é a nossa produção
pegue o radical + primeira letra do final + mos
stem + primeira letra do final + é (sem acentos)
em todos os cenários, exceto nos dois acima, os verbos -ir se comportam como verbos -er. mude $ f para e se for i.
caule + $ f + s
se a última letra do final é s. isso inclui ellos, ellas, ustedes que têm todos os mesmos finais. quão conveniente.
caule + $ f + n
estamos assumindo entrada válida, então as únicas outras possibilidades são Él, Ella e Usted, todas com os mesmos finais
imprimir saída, removendo o dobro do i (que aparece quando você usa vosotros com um verbo ir)
fonte
perl, 298 caracteres
ou se pudermos tomar cuidado com o vento e assumir uma entrada válida, 246 caracteres:
saída de teste:
fonte
Java - muito longo
Eu nem vou me preocupar em contar. Se alguém quiser jogar melhor isso, faça-o. Acabarei por implementar o desafio de mudar de tronco.
fonte