Presta atención ya que en este post encontrarás la solución que buscas.
Solución:
Retina, 51 bytes
.*[aeio]$
1
A`en$|ch|ei|au
^$
2
A`[jkz]|gy|m$
D+
4
Se me ocurrieron las expresiones regulares y @MartinBüttner hizo la conversión a/golfing en Retina, así que… ¿hurra por el esfuerzo de equipo?
el mapeo es 1 -> Italian, 2 -> German, (empty) -> Hungarian, 4 -> English
siendo el importe clasificado en cada categoría 4506 + 1852 + 2092 + 3560 = 12010
.
¡Pruébelo en línea! | Versión multilínea modificada
Explicación
En primer lugar, el Python equivalente es algo como esto:
import re
def f(s):
if re.search("[aeio]$", s):
return 1
if re.search("en$|ch|ei|au", s):
return 2
if re.search("[jkz]|gy|m$", s):
return ""
return 4
Déjame decir eso o$
es un excelente indicador de italiano.
La versión Retina es similar, con pares de líneas que forman etapas de reemplazo. Por ejemplo, las dos primeras líneas
.*[aeio]$
1
reemplaza las coincidencias de la primera línea con el contenido de la segunda.
Las siguientes tres líneas hacen lo mismo, pero usando el modo anti-grep de Retina – anti-grep (especificado con A`
) elimina la línea si coincide con la expresión regular dada, y las siguientes dos líneas son un reemplazo de una línea vacía a la salida deseada.
A`en$|ch|ei|au
^$
2
La siguiente línea usa anti-grep nuevamente, pero no reemplaza la línea vacía, lo que proporciona una salida fija para húngaro.
A`[jkz]|gy|m$
Finalmente, las dos últimas líneas.
D+
4
reemplaza una línea no vacía que no es un dígito con 4
. Todas las sustituciones solo pueden ocurrir si no se activó ninguna sustitución anterior, simulando una if/else if
cadena.
Si te gustó nuestro trabajo, eres capaz de dejar un enunciado acerca de qué te ha gustado de esta crónica.