pengantar
Katakanlah S 1 = a...b
dan S 2 = ..c..
. Jika kita menempatkannya di atas satu sama lain, kita mendapatkan:
a...b
..c..
Kami menggabungkan kedua string, dengan .
sebagai karakter cair (yang dapat tumpang tindih). Kami mendapatkan ini:
a.c.b
Jika salah satu string lebih panjang dari yang lain, kami hanya menerapkan algoritma yang sama:
a.....b
..c..
becomes:
a.c...b
dan
a.....b
..c.......
becomes:
a.c...b...
Jika dua karakter bertabrakan, kita cukup menggunakan karakter bawah, mis
a..b
...c
becomes:
a..c
Tugas
Diberikan dua string yang tidak kosong, output string yang digabungkan . Catatan , Anda dapat mengasumsikan bahwa input hanya berisi titik dan huruf kecil (atau huruf besar jika itu lebih nyaman).
Uji kasus
Input Output
a....b ..c... a.c..b
aaaaaa bbbbbb bbbbbb
ab.ab. b.b.b. bbbab.
a.......b c c.......b
Ini adalah kode-golf , jadi pengiriman dengan jumlah byte paling sedikit menang!
a.....b
..c.......
mungkin? Apa hasilnya?a.c...b...
.Jawaban:
Jelly , 5 byte
Input melalui argumen baris perintah.
Cobalah online!
Penjelasan
Ini adalah port langsung dari jawaban CJam saya (lihat untuk penjelasan mengapa ini berhasil):
sumber
CJam, 9 byte
Uji di sini.
Penjelasan
Memanfaatkan fakta itu
'.' < upper case letters < lower case letters
. Dengan cara ini, ketika mengambil maksimum elemen-elemen antara dua string, huruf apa pun menimpa a.
, tetapi kita dapat membuat huruf dari input kedua menimpa huruf dari yang pertama jika kita huruf besar terlebih dahulu. Membingungkan? Inilah salah satu contoh uji sebagai contoh:Konversi dulu ke huruf besar:
Ambil maksimum elemen-bijaksana:
Konversi kembali ke huruf kecil:
Dan di sini adalah bagaimana kode melakukan itu:
sumber
eu
/el
trik!Javascript ES6,
5255 karakterUji
sumber
f('c', 'a....b')
Pyth, 11
Cobalah secara online atau jalankan Test Suite
sumber
Serius, 10 byte
Cobalah online!
Menggunakan strategi yang sama dengan jawaban CJam Martin
Penjelasan:
sumber
Oktaf, 50 byte
sumber
!=
dengan>
Haskell,
4342 byteContoh penggunaan:
"ab.ab." # "b.b.b."
->"bbbab."
.Bagaimana itu bekerja:
jika kedua daftar tidak kosong, pilih kepala daftar 1 jika kepala daftar 2 adalah
"."
, atau pilih kepala daftar kedua. Tambahkan panggilan rekursif dengan ekor daftar.jika setidaknya satu daftar kosong, tambahkan kedua daftar.
Sunting: @Lynn menyimpan satu byte. Terima kasih!
sumber
c<'a'
untuk menyimpan byte.Python 2, 47 byte
sumber
Julia, 101 byte
Ini adalah fungsi yang menerima dua string dan mengembalikan string.
Kami menghitung
m
sebagai panjang maksimum dari dua input, kemudian mendefinisikan fungsir
yang pas dengan inputnya.
s ke panjangm
dan menyimpannya sebagai argumen fungsi. Kami kemudianzip
memasukkan input yang tepat dan memeriksa minimum (seperti yang didefinisikan oleh kode ASCII) dari masing-masing pasangan. Jika a.
, kita gunakan karakter mana saja yang memiliki kode lebih besar, jika tidak kita gunakan yang mana yang berasal dari input kedua. Array yang dihasilkanjoin
diedarkan ke dalam string dan dikembalikan.sumber
C,
10689 byteTes langsung pada ideone .
sumber
Retina , 55
Jalur 5 adalah ruang tunggal. Baris 6 adalah baris kosong (tanpa baris baru)
Cobalah online.
Saya memulai yang ini di GNU sed, (dengan opsi -r). Port langsung ke Retina begitu aku mengetahui regexnya. Versi sed adalah:
sumber
a..k.f....b c...f.g...g. => .c..kffg...g
Python 2, 70 byte
Coba di sini!
Pertama kita buat zip kedua string menjadi satu daftar. Jika string kedua lebih panjang dari yang pertama, itu diisi dengan
None
(map(None,x,y)
apakah itu).Kemudian kita beralih ke daftar ini dengan
j
menjadi karakter dari string pertama dank
yang dari string kedua. Kami memilihk
jika itu bukan titik dan sebaliknyaj
.Ini bisa menjadi 61 byte jika saya bisa menampilkan hasilnya sebagai daftar karakter, bukan string.
sumber
Perl, 48 + 3 = 51 byte
Bah tidak dapat menemukan solusi yang lebih pendek. (Pendekatan yang sama dengan jawaban JavaScript Qwertiy).
Membutuhkan
-pl
dan menerima input daristdin
dan-i
sumber
$_^=$^I^$^I;s/\.|\0/substr$^I,pos,1or$&/ge
PHP> = 7.1, 58 Bytes
Versi Online
sumber
q / kdb +,
4340 byteLarutan:
Contoh:
Penjelasan:
Catatan: Saya mengambil keuntungan dari "Diberikan dua string yang tidak kosong " dan dengan asumsi bahwa input adalah string. Dalam kdb
"c"
adalah atom,(),"c"
adalah string, jika tidak perlu menambahkan 6 byte ke skor, karena kita tidak dapat menggunakan$
untuk pad atom ...sumber