Antecedentes
Esta es la primera parte de un campo de golf de 3 hoyos sobre procesamiento de texto. La idea general es que si toma un texto de entrada y lo canaliza a través de las soluciones a los tres desafíos (con una pequeña cantidad de código de pegamento), escupirá un párrafo bellamente formateado. En este primer desafío, su tarea es un guión de un fragmento de texto utilizando patrones de guiones dados.
Entrada
Su programa tomará dos entradas de cadena: un fragmento de texto y una lista de patrones de separación silábica. La primera entrada es simplemente una cadena no vacía de caracteres y espacios ASCII imprimibles; no contendrá saltos de línea o tildes ~
. La segunda entrada es una lista de palabras delimitadas por comas, que consisten en sílabas delimitadas por tilde de caracteres ASCII en minúsculas. Un ejemplo esex~cel~lent,pro~gram~ming,abil~i~ties
.
Salida
Su programa modificará la primera entrada de la siguiente manera. Cualquier palabra (subcadena máxima de caracteres ASCII alfabéticos) cuya versión en minúsculas con guiones se encuentre en la segunda entrada se reemplazará por esa versión con guiones, pero se conservará su mayúscula. Con la lista de ejemplo anterior, si el texto contiene la palabra Excellent
, se reemplazará por Ex~cel~lent
; Sin embargo, Excellently
deberá no ser modificado. Su salida será esta cadena modificada.
Reglas detalladas y puntuación
Puede asumir lo siguiente sobre las entradas:
- La primera entrada no contiene tildes ni espacios iniciales, finales o repetidos. No esta vacio.
- La segunda entrada contiene al menos una palabra, y cada palabra contiene al menos dos sílabas. Cada sílaba no está vacía.
- La segunda entrada no contiene una palabra que aparece como una sílaba en otra palabra.
Puede cambiar el orden de las dos entradas, si lo desea, y opcionalmente agregar una nueva línea final a la salida.
Puede escribir una función o un programa completo. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten.
Casos de prueba
Estos se enumeran en el formato 1st input [newline] 2nd input [newline] output
.
Excellent programming abilities, you work excellently!
ex~cel~lent,pro~gram~ming,abil~i~ties
Ex~cel~lent pro~gram~ming abil~i~ties, you work excellently!
Superman (sometimes incorrectly spelled "Super-man") is super #&%@ing strong.
su~per,some~times,in~cor~rectly,spell~ing
Superman (some~times in~cor~rectly spelled "Su~per-man") is su~per #&%@ing strong.
IncONsISTent caPItalizATIon!
in~con~sis~tent,cap~i~tal~iza~tion
In~cON~sIS~Tent caP~I~tal~izA~TIon!
Such short words.
awk~ward
Such short words.
Digits123 are456cool789.
dig~its,dig~i~tal,are~cool
Dig~its123 are456cool789.
magic magic
ma~gic
ma~gic ma~gic
Cualquier posible error de separación silábica en este desafío se debe a esta herramienta de separación silábica .
#programming!
seguirá siendo afectada por una segunda entrada depro~gram~ming
)? ¿Los números tampoco cuentan (es decir, solo se permiten caracteres alfabéticos)?Respuestas:
Pip,
6054 bytesRepositorio de GitHub para Pip
Toma entradas como argumentos de línea de comandos (lo que requiere comillas alrededor de la entrada 1, suponiendo que contenga espacios). No se imprime la nueva línea final (agregue una
x
al final del programa para agregar una).Algo descabellado, con comentarios:
Ejecución de muestra:
fuente
Retina , 88 bytes
Para fines de conteo, cada línea entra en un archivo separado,
\n
se reemplaza con caracteres de nueva línea reales y<empty>
es un archivo vacío. Para mayor comodidad, puede ejecutar el código anterior desde un solo archivo (donde<empty>
hay una línea vacía) si usa el-s
indicador de intérprete.fuente
Javascript ES6,
117141 caracteresPrueba:
fuente
Javascript (ES6),
173169Búsqueda y reemplazo básico de expresiones regulares
Violín
Editar: error corregido para el caso de prueba
magic magic
,ma~gic
fuente
f("magic magic", "ma~gic")
regresa"ma~gic magic"
Perl, 146
Solo un primer intento, muchas cosas se pueden acortar, ¡continuará mañana!
fuente