Um desafio bastante simples: você receberá duas entradas, uma sequência e um número (o número pode ser tomado como uma sequência, ou seja, em "123"
vez de 123
)
Se a sequência não terminar em um número (ou seja, não corresponde à regex \d$
), basta acrescentar o número ao final da sequência.
Se a sequência terminar em um número (ou seja, corresponde ao regex \d+$
), você deve primeiro excluí-lo e depois anexá-lo.
Nenhuma das entradas jamais será inválida ou vazia (inválida é definida pela entrada numérica que não contém apenas dígitos)
O número nunca conterá a -
ou a .
.
A sequência nunca conterá uma nova linha ou caracteres não-em branco que não podem ser impressos.
Casos de teste:
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
Experimente online!
fonte
a
termina"L"
porque é56**7
avaliado como1727094849536L
. Entrada dea="abcdL"; b="59"
saídas"abcd59"
. O seu link TIO não avalia56**7
a uma longa, então eu não sei o que está acontecendoPHP,
37363533 bytesGuardado 1 byte graças a Jörg Hülsermann .
fonte
chop
como alias salva 1 BytesPerl 5, 12 bytes
Código de 11 bytes + 1 para
-p
.Experimente online!
fonte
Java 8, 32 bytes
Recebe entrada
a
como uma String e, porb
isso, não importa se é uma String ou um número inteiro (embora eu use Integer no link TIO abaixo).Experimente aqui.
fonte
Python 2 , 32 bytes
Experimente online!
Toma as entradas na ordem inversa, tanto como string.
fonte
05AB1E , 9 bytes
Experimente online! Provavelmente uma solução ruim, mas é a melhor que eu poderia
Explicação
fonte
Japonês , 10 bytes
Experimente online!
fonte
U
não terminar em um número. Tente usar*
no RegEx, em vez de+
. TIOU
faz fim em um número. Eu acho que você vai ter que fazerr"%d+$" +V
Python 2 ,
444139 bytesEDIT: -4 bytes thanks to @Dom Hastings. I don't use regular expressions much.
EDIT 2: -2 bytes thanks to @totallyhuman pointing out that the number could be taken as a string
Had to be expected...
Just removes the digits at the end of the string and appends the number
Try it online!
fonte
\d*$
, can you replace the""
with ``y
`` to save some bytes?y
parameter as a string too.Pip,
97 bytes@DLosc saved me 2 bytes!
Try it online!
Explanation
fonte
Jelly, 5 bytes
Try it online!
How it works
fonte
JavaScript (ES6),
282625 bytesfonte
?
required?Ruby, 21 bytes
Takes two strings in input.
Try it online!
fonte
C#, 45 bytes
Explanation:
fonte
V,
74 bytesTry it online!
This uses the same regex as the Retina answer above:
fonte
Perl 6, 20 bytes
fonte
Tcl 32 bytes
Não tenho certeza sobre a interface esperada. Isso é feito como um procedimento que aceita as duas entradas como argumentos de chamada. Para transformá-lo em um script independente que lê a entrada de stdin e gera o resultado em stdout, seria necessário a linha extra:
ou faria tudo "inline":
regsub pega um RE, a string original e uma string para substituir a parte correspondente.
fonte
Mathematica, 48 bytes
Já existe uma solução Mathematica (84 bytes).
fonte
Cenoura ,
1621 bytesExperimente online!(a entrada é separada por avanço de linha)
Explicação
Eu tive que aumentar o número de bytes em 5 porque o código não funcionava para casos de teste como
a5b3
com vários dígitos.fonte
Haskell,
75 bytes95 bytes917961 bytesEu tentei fazer isso sem regex, então talvez essa seria uma resposta dramaticamente aprimorada. Além disso, existem algumas maneiras pelas quais eu poderia fazer isso, por isso não tenho certeza se consigo raspar alguns bytes com uma abordagem diferente.
UPDATE: Eu subi em bytes porque percebi que estava falhando no caso de teste em que existem números na string que não são o sufixo. Agora tenho certeza que o regex forneceria uma resposta muito melhor.
UPDATE2: Após um ótimo feedback, mais bytes foram transferidos!
fonte
b=(`elem`['0'..'9'])
é menor queisDigit
+import
.dropWhile
pode ser substituído porsnd.span
, ie=r(snd$span b$r d)++e
. Se você reverter o teste,b=(`notElem`...)
poderá prosseguird#e|b$last$d=d++e|2>1=r(snd$break b$r d)++e
.|b$last$d=d++e|2>1
peça não pode ser simplesmente descartada? Todos os casos de teste parecem funcionar bem. Experimente online!Mathematica, 84 bytes
input 2 strings
resultado
fonte
C (gcc) ,
99989695 bytesDeve ser capaz de jogar isso um pouco ...
Experimente online!
fonte
Noether , 11 bytes
Experimente aqui!
Ao inserir uma sequência, coloque-a entre aspas
Explicação:
fonte
05AB1E , 8 bytes
Experimente online!
Explicação:
fonte