Un desafío bastante simple: recibirá dos entradas, una cadena y un número (el número puede tomarse como una cadena, es decir, en "123"
lugar de 123
)
Si la cadena no termina en un número (es decir, no coincide con la expresión regular \d$
), simplemente agregue el número al final de la cadena.
Si la cadena termina en un número (es decir, coincide con la expresión regular) \d+$
), primero debe eliminar eso y luego agregar el número.
Ninguna de las entradas será inválida o vacía (inválida se define por la entrada numérica que no contiene solo dígitos)
El número nunca contendrá a -
o a.
.
La cadena nunca contendrá una nueva línea o caracteres no imprimibles que no sean espacios en blanco.
Casos de prueba:
abc123 + 345 -> abc345
123 + 1 -> 1
hello + 33 -> hello33
123abc123 + 0 -> 123abc0
ab3d5 + 55 -> ab3d55
onetwo3 + 3 -> onetwo3
99ninenine + 9999 -> 99ninenine9999
Python 2 , 30 bytes
Pruébalo en línea!
fuente
a
termina"L"
porque56**7
evalúa1727094849536L
. Entrada dea="abcdL"; b="59"
salidas"abcd59"
. Su enlace TIO no evalúa56**7
a un largo, así que no sé lo que está pasandoPHP,
37363533 bytesGuardado 1 byte gracias a Jörg Hülsermann .
fuente
chop
como alias guarda 1 BytesPerl 5, 12 bytes
Código de 11 bytes + 1 para
-p
.Pruébalo en línea!
fuente
Java 8, 32 bytes
Toma la entrada
a
como una Cadena, y parab
ello no importa si es una Cadena o un entero (aunque uso Integer en el enlace TIO a continuación).Pruébalo aquí.
fuente
Python 2 , 32 bytes
Pruébalo en línea!
Toma las entradas en orden inverso, ambas como cadena.
fuente
05AB1E , 9 bytes
Pruébalo en línea! Probablemente sea una mala solución, pero es lo mejor que se me ocurrió.
Explicación
fuente
Japt , 10 bytes
Pruébalo en línea!
fuente
U
no termina en un número. Intente usar*
en el RegEx, en lugar de+
. TIOU
lo hace sentido en una serie. Creo que tendrá que hacerlor"%d+$" +V
Python 2 ,
444139 bytesEDITAR: -4 bytes gracias a @Dom Hastings. No uso muchas expresiones regulares.
EDITAR 2 : -2 bytes gracias a @totallyhuman señalando que el número podría tomarse como una cadena
Tenía que esperarse ...
Simplemente elimina los dígitos al final de la cadena y agrega el número
Pruébalo en línea!
fuente
\d*$
, ¿puede reemplazarla""
con ``y
`` para guardar algunos bytes?y
parámetro como una cadena.Pip ,
97 bytes¡@DLosc me ahorró 2 bytes!
Pruébalo en línea!
Explicación
fuente
Jalea , 5 bytes
Pruébalo en línea!
Cómo funciona
fuente
JavaScript (ES6),
282625 bytesfuente
?
requerido?Ruby , 21 bytes
Toma dos cadenas de entrada.
Pruébalo en línea!
fuente
C #, 45 bytes
Explicación:
fuente
V ,
74 bytesPruébalo en línea!
Utiliza la misma expresión regular que la respuesta de Retina anterior:
fuente
Perl 6 , 20 bytes
fuente
Tcl 32 bytes
No estoy seguro de la interfaz esperada. Esto se realiza como un procedimiento que acepta las dos entradas como argumentos de llamada. Para convertirlo en un script independiente que lea la entrada de stdin y envíe el resultado a stdout, se necesitaría la línea adicional:
o lo haría todo "en línea":
regsub toma un RE, la cadena original y una cadena para reemplazar la parte correspondiente.
fuente
Mathematica, 48 bytes
Ya existe una solución de Mathematica (84 bytes).
fuente
Zanahoria ,
1621 bytesPruébalo en línea!(la entrada está separada de salto de línea)
Explicación
Tuve que aumentar el bytecount en 5 porque el código no funcionaba para casos de prueba como
a5b3
con varios dígitos.fuente
Haskell,
75 bytes95 bytes917961 bytesIntenté hacer esto sin expresiones regulares, así que tal vez esa sería una respuesta dramáticamente mejorada. También hay un par de maneras en que podría hacerlo, así que no estoy seguro si puedo reducir algunos bytes con un enfoque diferente.
ACTUALIZACIÓN: subí en bytes porque me di cuenta de que estaba fallando el caso de prueba donde existen números en la cadena que no son el sufijo. Ahora estoy seguro de que regex proporcionaría una respuesta mucho mejor.
ACTUALIZACIÓN2: ¡Después de algunos comentarios excelentes, se jugaron más bytes!
fuente
b=(`elem`['0'..'9'])
es más corto queisDigit
+import
.dropWhile
puede ser reemplazado consnd.span
, es decir=r(snd$span b$r d)++e
. Si invierte la pruebab=(`notElem`...)
, puede continuard#e|b$last$d=d++e|2>1=r(snd$break b$r d)++e
.|b$last$d=d++e|2>1
puede soltar la pieza? Todos los casos de prueba parecen funcionar bien. Pruébalo en línea!Mathematica, 84 bytes
entrada 2 cuerdas
salida
fuente
C (gcc) ,
99989695 bytesDebería poder jugar golf un poco ...
Pruébalo en línea!
fuente
Noether , 11 bytes
Pruébalo aquí!
Al ingresar una cadena, escríbala entre comillas
Explicación:
fuente
05AB1E , 8 bytes
Pruébalo en línea!
Explicación:
fuente