Довольно простая задача: вы получите два ввода: строку и число (число может быть взято как строка, т.е. "123"
вместо 123
)
Если строка не заканчивается числом (т. Е. Не соответствует регулярному выражению \d$
), просто добавьте число в конец строки.
Если строка заканчивается числом (то есть соответствует регулярному выражению \d+$
), вы должны сначала удалить это, а затем добавить число.
Ни один из входных данных никогда не будет недействительным или пустым (недопустимый определяется числовым вводом, не содержащим только цифры)
Номер никогда не будет содержать -
или .
.
Строка никогда не будет содержать символ новой строки или непечатные непробельные символы.
Тестовые случаи:
abc123 + 345 -> abc345
123 + 1 -> 1
hello + 33 -> hello33
123abc123 + 0 -> 123abc0
ab3d5 + 55 -> ab3d55
onetwo3 + 3 -> onetwo3
99ninenine + 9999 -> 99ninenine9999
Python 2 , 30 байт
Попробуйте онлайн!
источник
a
заканчивается,"L"
потому что56**7
оценивается в1727094849536L
. Вводa="abcdL"; b="59"
выходов"abcd59"
. Ваша ссылка TIO не оценивается56**7
долго, поэтому я не знаю, что происходитPHP,
37363533 байтаСохранено 1 байт благодаря Jörg Hülsermann .
источник
chop
как псевдоним спасает 1 байтPerl 5, 12 байт
11 байт код + 1 для
-p
.Попробуйте онлайн!
источник
Java 8, 32 байта
Принимает ввод
a
в виде строки и дляb
него не имеет значения, является ли он строкой или целым числом (хотя я использую Integer в ссылке TIO ниже).Попробуй это здесь.
источник
Python 2 , 32 байта
Попробуйте онлайн!
Принимает входные данные в обратном порядке, оба в виде строки.
источник
05AB1E , 9 байт
Попробуйте онлайн! Возможно, плохое решение, но это лучшее, что я мог придумать
объяснение
источник
Japt , 10 байт
Попробуйте онлайн!
источник
U
не заканчивается числом. Попробуйте использовать*
в RegEx, а не+
. TIOU
делает конец в ряде. Я думаю, что вам придется сделатьr"%d+$" +V
Python 2 ,
444139 байтРЕДАКТИРОВАТЬ: -4 байта благодаря @Dom Hastings. Я не часто использую регулярные выражения.
РЕДАКТИРОВАТЬ 2 : -2 байта благодаря @totallyhuman, указывающему, что число может быть взято как строка
Ожидалось ...
Просто удаляет цифры в конце строки и добавляет число
Попробуйте онлайн!
источник
\d*$
, можете ли вы заменить его на""
``y
``, чтобы сохранить несколько байтов?y
параметр в виде строки.Пип ,
97 байт@DLosc спас мне 2 байта!
Попробуйте онлайн!
объяснение
источник
Желе , 5 байт
Попробуйте онлайн!
Как это устроено
источник
JavaScript (ES6),
282625 байтисточник
?
требуется?Рубин , 21 байт
Принимает две строки на входе.
Попробуйте онлайн!
источник
C #, 45 байт
Объяснение:
источник
V ,
74 байтаПопробуйте онлайн!
Это использует тот же регулярное выражение, что и ответ Retina выше:
источник
Perl 6 , 20 байт
источник
Tcl 32 байта
Я не уверен насчет ожидаемого интерфейса. Это делается как процедура, которая принимает два входа в качестве аргументов вызова. Чтобы превратить его в автономный скрипт, который считывает ввод из stdin и выводит результат в stdout, потребуется дополнительная строка:
или сделал бы все это "встроенным"
regsub принимает RE, исходную строку и строку для замены соответствующей части.
источник
Mathematica, 48 байтов
Уже есть решение Mathematica (84 байта).
источник
Морковь ,
1621 байтПопробуйте онлайн!(ввод разделен переводом строки)
объяснение
Мне пришлось увеличить число байтов на 5, потому что код не работал для тестовых случаев, например
a5b3
с несколькими цифрами.источник
Haskell,
75 байтов95 байтов917961 байтовЯ попытался сделать это без регулярных выражений, так что, возможно, это будет значительно улучшенный ответ. Также есть несколько способов, которыми я мог бы пойти по этому поводу, поэтому я не уверен, смогу ли я брить несколько байтов другим подходом.
ОБНОВЛЕНИЕ: я пошел в байтах, потому что я понял, что провалил тестовый случай, где в строке существуют числа, которые не являются суффиксом. Теперь я уверен, что регулярное выражение даст гораздо лучший ответ.
ОБНОВЛЕНИЕ 2: После некоторого отличного отзыва, было добавлено больше байтов!
источник
b=(`elem`['0'..'9'])
корочеisDigit
+import
.dropWhile
может быть замененsnd.span
, то есть=r(snd$span b$r d)++e
. Если вы отмените тест,b=(`notElem`...)
вы можете пойти сd#e|b$last$d=d++e|2>1=r(snd$break b$r d)++e
.|b$last$d=d++e|2>1
нельзя просто отбросить деталь? Все контрольные примеры работают нормально. Попробуйте онлайн!Mathematica, 84 байта
введите 2 строки
выход
источник
C (gcc) ,
99989695 байтДолжен быть в состоянии сыграть в гольф немного вниз ...
Попробуйте онлайн!
источник
Нетер , 11 байт
Попробуй это здесь!
При вводе строки заключите ее в кавычки
Объяснение:
источник
05AB1E , 8 байтов
Попробуйте онлайн!
Объяснение:
источник