Un numeronym (también conocido como "contracción numérica") es cuando una palabra se acorta usando números. Un método de contracción común es utilizar la longitud de la subcadena reemplazada para reemplazar todos los caracteres excepto el primero y el último. Por ejemplo, use en i18n
lugar de internationalization
o en L10n
lugar delocalization
. (El L
está en mayúscula ya que uno en minúscula se parece demasiado al 1
.)
Por supuesto, varias palabras en la misma frase pueden tener la misma forma abreviada, por lo que su trabajo es convertir un grupo de palabras a sus numeronyms, o en el caso de que existan algunas palabras diferentes con el mismo numeronym, su programa debe dar un resultado de A7s R4t
, abreviatura de Ambiguous Result
(sí, sé que este resultado es en sí mismo un resultado ambiguo).
Reglas:
- Use un programa o función e imprima o devuelva el resultado.
- La entrada se toma como una sola cadena.
- La salida es una sola cadena de palabras delimitadas por espacios.
- Su programa no necesita convertir palabras con longitud 3, y no debe convertir palabras más cortas.
- Si un
l
(ell minúsculo) ocurriera antes de un1
(uno), se debe poner en mayúscula. - Si un
I
(ojo en mayúscula) ocurriera antes de un1
(uno), se debe poner en minúscula. - La entrada será ASCII y espacios imprimibles. Las palabras están separadas por espacios.
- El código más corto gana.
Ejemplos:
A7s R4t -> A7s R4t (OR: A1s R1t, etc)
Ambiguous Result -> A7s R4t
Billy goats gruff -> B3y g3s g3f
Thanks for the Memories -> T4s f1r the M6s (one possible answer, NOT: Thnks fr th Mmrs)
Programming Puzzles & Code Golf -> P9g P5s & C2e G2f
globalization -> g11n
localizability -> L12y
Internationalization or antidisestablishmentarianism -> i18n or a26m
Internationalization or InternXXXXXalization -> A7s R4t
what is this fiddle and faddle -> A7s R4t
A be see -> A be s1e (OR: A be see)
see sea -> s1e s1a (OR: see sea)
2B or not 2B -> 2B or not 2B (OR: 2B or n1t 2B. 2 letters, don't change, don't count as ambiguous)
this example is this example -> t2s e5e is t2s e5e (same words aren't ambiguous)
l1 -> l1 (2 letters, don't change.)
I1 -> I1 (2 letters, don't change.)
Editar: Si alguien no obtuvo la referencia: Gracias de la Sra.
l1
convertirseL1
o permanecer comol1
?example example
seríae5e e5e
, pero sería bueno incluir un caso de prueba que cubra esto.2B or not 2B
y posteriores)Respuestas:
J, 92 bytes
Una larga cadena de llamadas compuestas. La primera parte es solo una bifurcación: un literal
joinstring
, y una función (en J,1 (10 + +) 2
es(10 + (1 + 2))
). La segunda parte es la función. Las dosrplc
llamadas son para reemplazar el I / l cuando pueden confundirse.&
es composición, y componer un operador con un valor curries. (Por lo tanto,3&+
proporciona una función que espera que se agregue el segundo argumento). Finalmente, la última parte es la función que toma la primera, la longitud-2 (compuesta con stringificación) y la última. el&>&;:
bit al final compone esta función (que debe aplicarse a cada argumento) a>
(unboxing), porque;:
(palabras divididas) devuelve una lista en recuadro (para que cada elemento pueda tener una longitud diferente).ejemplo:
fuente
Caché ObjectScript , 231 bytes
Esto sería bueno para MUMPS que cumplen con los estándares si no fuera por esa molesta
$REPLACE
llamada, que no es parte del estándar. Replegarlo en M puro requiere unos 80 bytes, por lo que no tomé esa ruta.El punto de entrada es
$$z("your string here")
, que regresa"y2r s4g h2e"
, y así sucesivamente.fuente
C #,
280274 bytesGolfista por primera vez aquí! ¡He estado disfrutando de leer esto últimamente, así que pensé que podría probarlo yo mismo! Probablemente no sea la mejor solución, pero ¡bueno!
Lo mismo sin golf:
¡Gracias chicos!
fuente
Perl,
131120 bytesHe agregado un byte para usar el
-p
interruptor:Explicación
fuente
s/(\w)(\w+)(\w)/$1.length($2)."$3_$2"/ge
→s/\B(\w+)(\w)/length($1)."$2_$1"/ge
.[Il]
solo antes1
, ¡también guardé un par de bytes!JavaScript (ES6), 165 bytes
Explicación
Prueba
Mostrar fragmento de código
fuente
JavaScript ES6, 162
Menos golf
Prueba
Mostrar fragmento de código
fuente
Python 2, 185 bytes
fuente
Pitón 3, 160
Me encantaría encontrar una buena manera de reemplazar esas llamadas de reemplazo.
Con algunos casos de prueba:
fuente
Factor,
4835 bytes, sin competenciaEs una lambda que va en la pila, que técnicamente no cumple con los requisitos realmente molestos que originalmente logré pasar por alto.
Utiliza el
english
vocabulario.O, si incorporamos la
a10n
palabra de la biblioteca, 131 bytes (con importación automática):fuente