Como todos sabemos, los limericks son poemas cortos, de cinco líneas, ocasionalmente lascivos, con un esquema de rima AABBA y un medidor anaplástico (sea lo que sea):
Escribir un absurdo de Limerick La
línea uno y la línea cinco riman en palabras
Y tal como has calculado
Ellos riman con el segundo
La cuarta línea debe rimar con el tercero
Se le asigna la tarea de escribir el programa más corto que, cuando alimenta un texto de entrada, imprime si cree que la entrada es un limerick válido. La entrada puede estar en la línea de comando o mediante la entrada estándar, a su elección, y la salida puede ser una simple "Y" / "N" o un puntaje de confianza, nuevamente a su elección.
Aquí hay otro ejemplo de un limerick correcto:
Había una señorita cuyos ojos
eran únicos en cuanto a color y tamaño.
Cuando los abrió de par en par. La
gente se apartó
y se alejó sorprendida.
Pero el siguiente poema claramente no es un limerick, ya que no rima:
Había un anciano de St. Bees
que fue picado en el brazo por una avispa.
Cuando se le preguntó: "¿Duele?"
Él respondió: "No, no lo hace,
estoy muy contento de que no haya sido un avispón".
Tampoco es este, ya que el medidor está todo mal:
Escuché de un hombre de Berlín
que odiaba la habitación en la que se encontraba.
Cuando le pregunté por qué
diría con un suspiro:
"Bueno, ya ves, anoche hubo un par de matones que celebraban a los Osos ganando a los zurdos Copa del Mundo, y eran muy ruidosos, así que no pude dormir por el estruendo ".
Pistas
Estas son algunas de las pistas que podría usar para decidir si su aporte es o no un limerick:
- Los Limericks siempre tienen cinco líneas de largo.
- Las líneas 1, 2 y 5 deben rimar.
- Las líneas 3 y 4 deben rimar.
- Las líneas 1, 2 y 5 tienen alrededor de 3x3 = 9 sílabas, mientras que la tercera y la cuarta tienen 2x3 = 6 sílabas
Tenga en cuenta que ninguno de estos, excepto el primero, es duro y rápido: una calificación de corrección del 100% es imposible.
Reglas
Su entrada debe, como mínimo , clasificar correctamente los ejemplos 1 a 3 de manera determinista.
Usted está autorizado a utilizar cualquier lenguaje de programación que le gustaría, a excepción de la programación supuesto lenguajes diseñados específicamente para este concurso (ver aquí ).
No está autorizado a utilizar ninguna biblioteca, excepto las ofertas estándar de su lenguaje de programación.
Usted está permitido suponer que este archivo , el diccionario de pronunciación CMU Sphinx, se encuentra en un archivo llamado 'c' en el directorio actual.
Usted está no permite codificar para las entradas de prueba: el programa debe ser un categorizador general de Limerick.
Usted está permitido suponer que la entrada es ASCII, sin ningún formato especial (como en los ejemplos), pero su programa no debe ser confundido por interpunction.
Bonos
Los siguientes bonos están disponibles:
- ¿Su programa genera su resultado como un limerick? ¡Resta el bono de 150 caracteres de longitud!
- ¿Su programa también identifica correctamente los sonetos? ¡Resta un bono de 150 caracteres de longitud extra!
- ¿Su programa genera su resultado como un soneto cuando se usa en un soneto? ¡Resta 100 caracteres adicionales de bonificación de longitud extra!
Finalmente...
Recuerde mencionar qué bonos cree que merece, si corresponde, y reste el bono de su número de personajes para llegar a su puntaje. Este es un concurso de código de golf : gana la entrada más corta (es decir, la entrada con la puntuación más baja).
Si necesita más datos de prueba (positivos), consulte el OEDILF o el Libro de las tonterías . Los datos de prueba negativos deberían ser fáciles de construir.
¡Buena suerte!
fuente
code-challenge
debido a los bonos. Lea las descripciones de las etiquetasRespuestas:
Python: 400-150-150 = 100
El guión más corto que se me ocurrió es ese ...
... pero ni lo intentes. Analiza el diccionario proporcionado para cada palabra que encuentra, por lo tanto, es muy lento. Además, se genera un error cada vez que una palabra no está en el diccionario.
Sin embargo, el código aún cumple con los requisitos: reconocer si el texto pasado a través de stdin es un limerick, un soneto o ninguno de esos.
Con solo 20 caracteres más, aquí está la versión optimizada:
Caracteristicas
Uso
Son posibles 3 salidas diferentes:
Código ampliado con explicaciones
fuente
sys.stdin.read()
o unopen(sys.argv[1]).read()
lugar) y volver a contar.ECMAScript 6 (138 puntos; prueba en Firefox):
288
-150
bonificación de puntos por incluir limerick (pellizcado de @MathieuRodic).Notas:
Espera que la variable
c
contenga el contenido del archivo de diccionario, ya que no puede leer archivos en ECMAScript simple.ECMAScript no tiene entrada estándar, pero
prompt
generalmente se considera "entrada estándar"; sin embargo, a medida queprompt
convierte los saltos de línea en espacios en la mayoría de los navegadores (si no todos), acepto la entrada de la variablei
.Código sin golf:
fuente