Un défi assez simple: vous recevrez deux entrées, une chaîne et un nombre (le nombre peut être pris comme une chaîne, c'est-à-dire "123"
au lieu de 123
)
Si la chaîne ne se termine pas par un nombre (c'est-à-dire qu'elle ne correspond pas à l'expression régulière \d$
), ajoutez simplement le nombre à la fin de la chaîne.
Si la chaîne se termine par un nombre (c'est-à-dire qu'elle correspond à l'expression régulière \d+$
), vous devez d'abord le supprimer, puis ajouter le numéro.
Aucune des entrées ne sera jamais invalide ou vide (invalide est défini par l'entrée numérique ne contenant que des chiffres)
Le numéro ne contiendra jamais a -
ou a .
.
La chaîne ne contiendra jamais de nouvelle ligne ou de caractères non blancs non imprimables.
Cas de test:
abc123 + 345 -> abc345
123 + 1 -> 1
hello + 33 -> hello33
123abc123 + 0 -> 123abc0
ab3d5 + 55 -> ab3d55
onetwo3 + 3 -> onetwo3
99ninenine + 9999 -> 99ninenine9999
Python 2 , 30 octets
Essayez-le en ligne!
la source
a
fin avec"L"
car est56**7
évalué à1727094849536L
. Entrée dea="abcdL"; b="59"
sorties"abcd59"
. Votre lien TIO n'évalue pas56**7
longtemps donc je ne sais pas ce qui se passePHP,
37363533 octets1 octet enregistré grâce à Jörg Hülsermann .
la source
chop
as alias sauve 1 octetsPerl 5, 12 octets
Code de 11 octets + 1 pour
-p
.Essayez-le en ligne!
la source
Java 8, 32 octets
Prend l'entrée en
a
tant que chaîne, etb
peu importe qu'il s'agisse d'une chaîne ou d'un entier (bien que j'utilise Integer dans le lien TIO ci-dessous).Essayez-le ici.
la source
Python 2 , 32 octets
Essayez-le en ligne!
Prend les entrées dans l'ordre inverse, toutes deux sous forme de chaîne.
la source
05AB1E , 9 octets
Essayez-le en ligne! Probablement une mauvaise solution mais c'est le mieux que je puisse trouver
Explication
la source
Japt , 10 octets
Essayez-le en ligne!
la source
U
ne se termine pas par un nombre. Essayez d'utiliser*
dans le RegEx, au lieu de+
. TIOU
fait fin dans un certain nombre. Je pense que vous devrez fairer"%d+$" +V
Python 2 ,
444139 octetsEDIT: -4 octets grâce à @Dom Hastings. Je n'utilise pas beaucoup d'expressions régulières.
EDIT 2 : -2 octets grâce à @totallyhuman soulignant que le nombre peut être pris comme une chaîne
Il fallait s'y attendre ...
Supprime simplement les chiffres à la fin de la chaîne et ajoute le nombre
Essayez-le en ligne!
la source
\d*$
, pouvez-vous remplacer le""
par ``y
`` pour économiser quelques octets?y
paramètre comme une chaîne.Pip ,
97 octets@DLosc m'a sauvé 2 octets!
Essayez-le en ligne!
Explication
la source
Gelée , 5 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
JavaScript (ES6),
282625 octetsla source
?
nécessaire?Rubis , 21 octets
Prend deux chaînes en entrée.
Essayez-le en ligne!
la source
C #, 45 octets
Explication:
la source
V ,
74 octetsEssayez-le en ligne!
Cela utilise le même regex que la réponse Retina ci-dessus:
la source
Perl 6 , 20 octets
la source
Tcl 32 octets
Je ne suis pas sûr de l'interface attendue. Cela se fait comme une procédure qui accepte les deux entrées comme arguments d'appel. Pour le transformer en un script autonome qui lit les entrées de stdin et renvoie le résultat vers stdout, il faudrait la ligne supplémentaire:
ou ferait tout "en ligne":
regsub prend un RE, la chaîne d'origine et une chaîne pour remplacer la partie correspondante.
la source
Mathematica, 48 octets
Il existe déjà une solution Mathematica (84 octets).
la source
Carotte ,
1621 octetsEssayez-le en ligne!(l'entrée est séparée par un saut de ligne)
Explication
J'ai dû augmenter le bytecount de 5 car le code ne fonctionnait pas pour les cas de test comme
a5b3
avec plusieurs chiffres.la source
Haskell,
75 octets95 octets917961 octetsJ'ai essayé de le faire sans regex, alors ce serait peut-être une réponse considérablement améliorée. Il y a aussi quelques façons de procéder, donc je ne sais pas si je peux raser quelques octets avec une approche différente.
MISE À JOUR: J'ai augmenté en octets parce que j'ai réalisé que j'échouais le cas de test où des nombres existent dans la chaîne qui ne sont pas le suffixe. Maintenant, je suis sûr que l'expression régulière fournirait une bien meilleure réponse.
UPDATE2: Après quelques bons commentaires, plus d'octets ont été joués!
la source
b=(`elem`['0'..'9'])
est plus court queisDigit
+import
.dropWhile
peut être remplacé parsnd.span
, c.-à-d=r(snd$span b$r d)++e
. Si vous inversez le test,b=(`notElem`...)
vous pouvez continuerd#e|b$last$d=d++e|2>1=r(snd$break b$r d)++e
.|b$last$d=d++e|2>1
pièce ne peut-elle pas être simplement abandonnée? Tous les cas de test semblent bien fonctionner. Essayez-le en ligne!Mathematica, 84 octets
entrée 2 chaînes
production
la source
C (gcc) ,
99989695 octetsDevrait être en mesure de jouer au golf un peu ...
Essayez-le en ligne!
la source
Noether , 11 octets
Essayez-le ici!
Lorsque vous entrez une chaîne, placez-la entre guillemets
Explication:
la source
05AB1E , 8 octets
Essayez-le en ligne!
Explication:
la source