Tantangan yang cukup sederhana: Anda akan menerima dua input, string dan angka (angka dapat diambil sebagai string, yaitu "123"
bukannya123
)
Jika string tidak diakhiri dengan angka (yaitu, tidak cocok dengan regex \d$
), tambahkan saja nomor ke akhir string.
Jika string berakhir dengan angka (yaitu, cocok dengan regex \d+$
), Anda harus terlebih dahulu menghapusnya dan kemudian menambahkan nomornya.
Tidak satu pun dari input yang akan menjadi tidak valid atau kosong (tidak valid didefinisikan oleh input numerik yang tidak hanya mengandung digit)
Nomornya tidak akan pernah mengandung a -
atau a .
.
String tidak akan pernah berisi baris baru, atau karakter non-spasi putih yang tidak dapat dicetak.
Kasus uji:
abc123 + 345 -> abc345
123 + 1 -> 1
hello + 33 -> hello33
123abc123 + 0 -> 123abc0
ab3d5 + 55 -> ab3d55
onetwo3 + 3 -> onetwo3
99ninenine + 9999 -> 99ninenine9999
Python 2 , 30 byte
Cobalah online!
sumber
a
diakhiri"L"
karena56**7
dievaluasi1727094849536L
. Input daria="abcdL"; b="59"
output"abcd59"
. TIO link Anda tidak56**7
terlalu panjang, jadi saya tidak tahu apa yang terjadiPHP,
37363533 byteDisimpan 1 byte berkat Jörg Hülsermann .
sumber
chop
as alias save 1 BytesPerl 5, 12 byte
11 byte kode +1 untuk
-p
.Cobalah online!
sumber
Java 8, 32 byte
Mengambil input
a
sebagai String, dan untukb
itu tidak masalah apakah itu sebuah String atau integer (walaupun saya menggunakan Integer di TIO-link di bawah).Coba di sini.
sumber
Python 2 , 32 byte
Cobalah online!
Mengambil input dalam urutan terbalik, baik sebagai string.
sumber
05AB1E , 9 byte
Cobalah online! Mungkin solusi yang buruk tapi itu yang terbaik yang bisa saya lakukan
Penjelasan
sumber
Japt , 10 byte
Cobalah online!
sumber
U
tidak diakhiri dengan angka. Coba gunakan*
di RegEx, bukan+
. TIOU
tidak akhir di nomor. Saya pikir Anda harus melakukanr"%d+$" +V
Python 2 ,
444139 byteEDIT: -4 byte terima kasih kepada @Dom Hastings. Saya tidak banyak menggunakan ekspresi reguler.
EDIT 2 : -2 bytes berkat @totallyhuman menunjukkan bahwa nomor dapat diambil sebagai string
Harus diharapkan ...
Hanya menghapus digit di akhir string dan menambahkan nomornya
Cobalah online!
sumber
\d*$
, dapatkah Anda mengganti""
dengan ``y
`` untuk menyimpan beberapa byte?y
parameter sebagai string juga.Pip ,
97 byte@Dosc menyelamatkan saya 2 byte!
Cobalah online!
Penjelasan
sumber
Jelly , 5 byte
Cobalah online!
Bagaimana itu bekerja
sumber
JavaScript (ES6),
282625 bytesumber
?
wajib?Ruby , 21 byte
Mengambil dua string dalam input.
Cobalah online!
sumber
C #, 45 byte
Penjelasan:
sumber
V ,
74 byteCobalah online!
Ini menggunakan regex yang sama dengan jawaban Retina di atas:
sumber
Perl 6 , 20 byte
sumber
Tcl 32 byte
Saya tidak yakin tentang antarmuka yang diharapkan. Ini dilakukan sebagai prosedur yang menerima dua input sebagai argumen panggilan. Untuk mengubahnya menjadi skrip mandiri yang membaca input dari stdin dan menampilkan hasilnya ke stdout, kita perlu baris tambahan:
atau akan melakukan semuanya "inline":
regsub mengambil RE, string asli dan string untuk mengganti bagian yang cocok dengannya.
sumber
Mathematica, 48 byte
Sudah ada solusi Mathematica (84 byte).
sumber
Wortel ,
1621 byteCobalah online!(input dipisahkan baris input)
Penjelasan
Saya harus meningkatkan bytecount oleh 5 karena kode tidak berfungsi untuk testcases seperti
a5b3
dengan beberapa digit.sumber
Haskell,
75 byte95 byte917961 byteSaya mencoba melakukan ini tanpa regex jadi mungkin itu akan menjadi jawaban yang ditingkatkan secara dramatis. Juga ada beberapa cara saya bisa melakukan ini sehingga saya tidak yakin apakah saya bisa mencukur beberapa byte dengan pendekatan yang berbeda.
UPDATE: Saya naik dalam byte karena saya menyadari saya gagal dalam test case di mana angka ada dalam string yang bukan suffix. Sekarang saya yakin bahwa regex akan memberikan jawaban yang jauh lebih baik.
UPDATE2: Setelah umpan balik yang bagus, lebih banyak byte di-golf!
sumber
b=(`elem`['0'..'9'])
lebih pendek dariisDigit
+import
.dropWhile
dapat diganti dengansnd.span
, yaitu=r(snd$span b$r d)++e
. Jika Anda membalik tes,b=(`notElem`...)
Anda dapat melakukannyad#e|b$last$d=d++e|2>1=r(snd$break b$r d)++e
.|b$last$d=d++e|2>1
bagian itu dijatuhkan begitu saja? Semua kasus uji tampaknya bekerja dengan baik. Cobalah online!Mathematica, 84 byte
masukan 2 string
keluaran
sumber
C (gcc) ,
99989695 byteHarus bisa bermain golf ini sedikit ...
Cobalah online!
sumber
Noether , 11 byte
Coba di sini!
Saat memasukkan string, lampirkan dalam tanda kutip
Penjelasan:
sumber
05AB1E , 8 byte
Cobalah online!
Penjelasan:
sumber