Explicación
¡Hola! Para aquellos de ustedes que no toman español, se conjuga un verbo basado en la persona que realiza la acción. Aquí hay un cuadro:
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
En español, todos los verbos terminan con ar
, er
o ir
. Aquí hay otra tabla ú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 un pronombre y un verbo, imprime el verbo conjugado usando el pronombre en tiempo presente. No te preocupes por el cambio de tallo y los verbos impares.
Ejemplos
Input Output
Yo escribir Escribo
Tu enseñar Enseñas
Ella querer Quere (It should be quiere but ignore stem changes)
Si su idioma no admite la impresión con acentos, puede omitirlos. De lo contrario, no debería tomar más caracteres para usar á en lugar de a en su código.
Puede encontrar más palabras para probar aquí: http://spanish.speak7.com/spanish_vocabulary_verbs.htm . Tenga en cuenta que el concursante debe ser contestar.
Desafío: cambios en el tallo
En español, algunos verbos tienen cambios en el tallo. Tomemos el verbo querer
por ejemplo. En todas las formas, excepto nosotros y vosotros , los primeros e
cambios a ie
. Entonces yo quiero
, pero nosotros queremos
. Si su programa puede dar cuenta de los cambios en la raíz, puede restar el doble de la longitud de cada palabra que apoya de su puntaje final. Por ejemplo, si admite el cambio i
-> y solo , puede restar el doble de la longitud , o 12, de su puntaje.ie
querer
querer
querer
Para algunos verbos que cambian las raíces, intente esto: https://conjuguemos.com/chart.php?language=spanish&id=2&etre=no&commands=no&all=no&source=public
Pequeñas bonificaciones
Solo por diversión, si explicas qué hace tu código en español, quita 30 de tu puntaje. No solo use Google Translate o podré decirle que hizo trampa.
(Como no soy hispanohablante, corrígeme si hay algún error)
fuente
Respuestas:
Python,
172168743 caracteres - 1796 bonus = -1053Actualizado para asumir el desafío de cambio de tallo.
Uso :
Prueba en entradas que no cambian el tallo :
Ejemplos de entrada de cambio de tallo :
Hace ambos cambios e-> ie y cambios o-> ue, evitando adecuadamente los casos nostros + vostros:
Así es como se determinó la bonificación y se generó la cadena de datos, a partir de la cual puede deducir los verbos en los que funciona:
Lo que da:
fuente
.
s, agregaría 50 pts más o menos a la puntuaciónten
en tu lista de raíces. teñir es e a i , no e a ie ; Tener es correo a decir , pero tiene un cambio de tallo irregular durante 1 s. Del mismo modo abstener , circunvenir , Obtener , sostener , venir , cocer , destorcer , oler , retorcer , torcer . Por otro lado, su guión de puntuación no parece contar tanto sentar comoSentir . Y se está perdiendo una.
ensosegsosten
, ydescontr
probablemente debería serdescont
.tener
Creo que sí. No me di cuenta de que los verbos que enumeraste tenían un caso especial. Puedo eliminarlos o darles cuenta (lo que sea más barato) y corregir los errores tipográficos si hay otro competidor cercanoPython, 240 bytes - bonificación (extremadamente grande)
Salida de muestra:
Explicación:
Este código utiliza un sitio web de conjugación gratuita existente ( http://www.conjugation.org/ ) que devuelve varias conjugaciones de una gran base de datos de verbos. Reduje ligeramente la URL mediante el uso de un acortador de URL en línea gratuito que permite pasar parámetros a través de la redirección ( http://smarturl.it/ ). Simplemente hago una solicitud HTTP basada en el verbo especificado, elimino los acentos de
u
ye
en la fuente, encuentro el pronombre en el HTML usando expresiones regulares y luego devuelvo la conjugación asociada.Es imposible saber cuántos verbos tienen cambios de tallo sin sondear toda la base de datos contra un diccionario. Probablemente sea seguro asumir que la bonificación negativa de esta base de datos es mucho mayor que cualquier bonificación de las listas codificadas que se pasan (lo que aumenta la longitud del código).
Obviamente, podría haber manejado mejor los caracteres acentuados, pero habría requerido codificación / decodificación y manejo adicional dentro de las expresiones regulares.
fuente
re.sub
ostring.replace
no tener que manejar los cambios de raíz, etc. Incluso su programa recibiría una puntuación negativa mayor si continúa agregando verbos que cambian de raíz a su lista codificada. La pregunta es defectuosa.Freepascal, 218 caracteres -30 = 189
Es una decisión difícil superar la respuesta de Python (original), especialmente con Pascal. Puedo intentar mejorar mañana, posiblemente con un concepto similar en un idioma diferente. No enviaré una respuesta que cambie el tronco, ya que veo esto como un desafío lingüístico más que de programación.
Versión sin golf:
Explicación (en español para el bono de -30 desde que lo solicitó)
el primer
copy
extrae la raíz del verbo, teniendo como parámetros el string , el índice para empezar (en este caso 1) y la cantidad de letras (en este caso length-2. ) el segundo extrae su desinencia.6*(7-pos(p[1],' yt v n')
se evalúa según la primera letra del pronombre. Si el pronombre es él / ella (o / s) o usted (es),pos
se evalúa a cero, así que el valor dentro de los paréntesis es 7.pos(v[length(v)-1],y
busca la penúltima letra del infinitivo enamosemosimos
así que avanza 4 por cada tipo de verbo , formando un ciclo de 12. El resto dey
consistencia en todas las desinencias. Se ha logrado intercalar las desinencias para "tu" y "yo". Sin embargo queda cierta cantidad de espacio en blanco que me gustaría eliminar. Así se define el índice para buscar la desinencia en y.pos(p[length(p)],'u s')+1)
determina el número de caracteres para imprimir. si el pronombre no termina ens
ou
solo se imprime un personaje. De esta manera suprimimos la segunda letra dean en en
en el caso de un pronombre de tercera persona singular: él, ella, usted.Salida
fuente
perl, 243 caracteres
Esta vez centrándose en la búsqueda de hash. Estoy bastante sorprendido de no poder hacer esto más pequeño.
Y si la validación de entrada no es importante, 186 caracteres:
fuente
perl, 155 caracteres
Solo un montón de expresiones regulares esta vez. Puede obtener un código más corto reorganizando las cosas ligeramente para que el pronombre venga después del verbo, ya que solo nos importa realmente el final del verbo:
Parece que lo anterior es actualmente el ganador del código que ignora el bono.
fuente
Bash,
301309 (corrección de errores)307299 incluyendo nuevas líneasNo es genial en comparación con los otros por ahí. Podría ser mejorado.
Explota algunas convenientes coincidencias.
La corrección de errores no se basa en que ningún verbo en español tenga "ii" en ninguna parte, debido a la forma en que guarda los caracteres cuando se maneja con verbos -ir. Por favor corrígeme si eso está mal.
Asume una entrada válida: el primer argumento es el pronombre en minúscula, con los acentos necesarios; El segundo argumento es el infinitivo del verbo. No se implementaron cambios en el tronco. Emite el verbo conjugado, en minúsculas, sin acentos.
Explicado. `` es una notación oscura para
$( )
, guardar un personaje.obtener el final del verbo
obtener el primer carácter del final del verbo
obtener la raíz del verbo
Verbo stem + o. $ o es nuestra salida
tomar tallo + primera letra de finalización + mos
madre + primera letra de finalización + es (sin acentos)
En todos los escenarios, excepto los dos anteriores, los verbos -ir se comportan como verbos -er. cambie $ f a e si es i.
tallo + $ f + s
si la última letra del final es s. esto incluye a ellos, ellas, ustedes que tienen las mismas terminaciones. que conveniente.
tallo + $ f + n
estamos asumiendo una entrada válida, por lo que las únicas otras posibilidades son Él, Ella y Usted, todas con las mismas terminaciones
salida de impresión, eliminando dobles i (que aparecen cuando usas vosotros con un verbo ir)
fuente
perl, 298 caracteres
o si podemos arrojar precaución al viento y asumir una entrada válida, 246 caracteres:
salida de prueba:
fuente
Java: demasiado largo
Ni siquiera me voy a molestar en contar. Si a alguien le gustaría jugar mejor al golf, por favor hágalo. Eventualmente implementaré el desafío de cambio de tallo.
fuente