"Gandakan" dua string

29

Ini terinspirasi oleh fungsi yang baru-baru ini saya tambahkan ke bahasa saya Tambah ++ . Karena itu saya akan mengirimkan jawaban singkat di Add ++ tetapi saya tidak akan menerimanya jika menang (itu tidak adil)

Tidakkah kamu membencinya ketika kamu bisa melipatgandakan angka tetapi tidak membalikan? Jadi Anda harus memperbaikinya, bukan?

Anda harus menulis fungsi atau program lengkap yang mengambil dua string yang tidak kosong sebagai input dan output versi yang dikalikan.

Bagaimana Anda mengalikan string? Aku akan memberitahu Anda!

Untuk mengalikan dua string, Anda mengambil dua string dan membandingkan setiap karakter. Karakter dengan titik kode tertinggi kemudian ditambahkan ke output. Jika mereka sama, cukup tambahkan karakter ke output.

String tidak dijamin panjangnya sama. Jika panjangnya berbeda, panjang string terakhir adalah panjang string terpendek. Masukan akan selalu huruf kecil dan mungkin mengandung karakter apa pun dalam rentang ASCII yang dapat dicetak ( 0x20 - 0x7E), tidak termasuk huruf besar.

Anda dapat menampilkan dalam format apa pun yang masuk akal, seperti string, daftar dll. Jadilah masuk akal, bilangan bulat bukanlah cara yang masuk akal untuk menghasilkan dalam tantangan ini.

Dengan input hello,dan world!, beginilah cara kerjanya

hello,
world!

w > h so "w" is added ("w")
o > e so "o" is added ("wo")
r > l so "r" is added ("wor")
l = l so "l" is added ("worl")
d < o so "o" is added ("worlo")
! < , so "," is added ("worlo,")

Jadi hasil akhir untuk hello,dan world!akan worlo,!

Lebih banyak kasus uji

(tanpa langkah)

input1
input2 => output

programming puzzles & code golf!?
not yet graduated, needs a rehaul => prtgyetmirgduuzzlesneedsde rolful

king
object => oing

blended
bold => boln

lab0ur win.
the "super bowl" => the0usuwir.

donald j.
trumfefe! => trumlefj.

Ini adalah sehingga kode terpendek menang! Luok!

caird coinheringaahing
sumber
35
Ini adalah maksimum string, bukan? Itu tidak tampak seperti mengalikan.
xnor
5
Nitpick: PPCG telah lulus, kami belum mendapatkan desain baru.
Dennis

Jawaban:

53

Haskell, 11 byte

zipWith max

Cobalah online!

Tidak banyak yang bisa dijelaskan.

nimi
sumber
7
Dan saya pikir Mathematica memiliki built-in yang aneh
Tn. Xcoder
@ Mr.Xcoder Mathematica memiliki zipWith, namanya MapThread
michi7x7
2
@ Mr.Xcoder sebenarnya, zipWithtidak terlalu aneh. Ini primitif fungsional yang cukup umum. Gagasan "zip" dua daftar bersama muncul dalam banyak masalah, dan begitu Anda melakukannya, Anda sering ingin menerapkan beberapa fungsi ke item 2-elemen yang dihasilkan, maka bagian "dengan".
Jonah
8

05AB1E , 4 byte

øΣà?

Menggunakan penyandian 05AB1E . Cobalah online!

Adnan
sumber
Saya merasa ø€àharus bekerja, tetapi tidak.
Magic Gurita Guci
Tampak lebih seperti pertanyaan daripada jawaban lol
Stan Strum
6

Perl 6 , 22 byte

{[~] [Zmax] @_».comb}

Sebagai bonus, ia menerima sejumlah multiplikasi, bukan hanya dua.

Sean
sumber
6

Japt , 16 byte

ñl g îUy ®¬ñ oÃq

Uji secara online! Mengambil input sebagai array dari dua string.

Kurangnya min dan max built-in melukai Japt di sini, tetapi masih berhasil melakukan skor yang lumayan ...

Penjelasan

 ñl g îUy ®   ¬ ñ oà q
Uñl g îUy mZ{Zq ñ o} q
                        // Implicit: U = input array     ["object", "king"]
       Uy               // Transpose the strings of U.   ["ok", "bi", "jn", "eg", "c ", "t "]
          mZ{      }    // Map each string Z to
             Zq ñ o     //   the larger of the two chars. (Literally Z.split().sort().pop())
                        //                               ["o", "i", "n", "g", "c", "t"]
                     q  // Join into a single string.    "oingct"
Uñl g                   // Sort the two input strings by length and take the shorter.
      î                 // Trim the previous result to this length.
                        //            "king"î"oingct" -> "oing"
                        // Implicit: output result of last expression
Produksi ETH
sumber
6

Jelly , 5 byte

żœ-"«

Cobalah online!

Bagaimana itu bekerja

żœ-"«  Main link. Arguemts: s, t (strings)

ż      Zipwith; form all pairs of corresponding characters from s and t.
       If one of the strings is longer than the other, its extra characters are 
       appended to the array of pairs.
    «  Dyadic minimum; get all minima of corresponding characters.
       This yields the characters themselves for unmatched characters.
 œ-"   Zipwith multiset subtraction; remove a single occurrence of the minimum from
       each character pair/singleton.
       This yields the maximum for pairs, but an empty string for singletons.

Contoh

Misalkan s = blended dan t = bold .

żhasil panen ["bb", "lo", "el", "nd", 'd', 'e', 'd']. Tiga elemen terakhir adalah karakter.

«adalah vektorisasi, minimum diadik, sehingga menghasilkan ['b', 'l', 'e', 'd', 'd', 'e', 'd'].

œ-"menghapus tepat satu kemunculan karakter ke- n di larik kedua dari string ke- n / karakter di larik pertama, menghasilkan . adalah atom pengurangan multiset , dan cepat membuatnya menjadi vektor.["b", "o", "l", "n", "", "", ""]œ-"

Saat dicetak, ini hanya membaca boln .

Dennis
sumber
Jadi, ini adalah zip, kemudian mengambil perbedaan multiset dari sesuatu, lalu ada beberapa tanda kutip ganda yang bagus dari makna misterius, dan akhirnya minimum. Bagus ... Tolong, penjelasannya? : D
Leo
1
Saya telah menambahkan contoh yang berfungsi.
Dennis
6

PHP> = 7.1, 52 Bytes

for(;$t=min(~$argv[1][$i],~$argv[2][$i++]);)echo~$t;

PHP Sandbox Online

PHP> = 7.1, 69 Bytes

for([,$a,$b]=$argv;(~$c=$a[$i])&&~$d=$b[$i++];)$r.=max($c,$d);;echo$r;

PHP Sandbox Online

PHP> = 7.1, 70 Bytes

for([,$a,$b]=$argv;(~$c=$a[$i])&&~$d=$b[$i++];)$r.=$c>$d?$c:$d;echo$r;

PHP Sandbox Online

Jörg Hülsermann
sumber
1
Sedikit golfed: for(;$t=min(~$argv[1][$i],~$argv[2][$i++]);)echo~$t;.
user63956
6

Alice , 8 byte

/oI\
@m+

Cobalah online!

Penjelasan

Alice juga memiliki operator ini (yang saya sebut superimpose ) tetapi tidak membatasi output dengan panjang string yang lebih pendek (sebagai gantinya, karakter yang tersisa dari string yang lebih panjang ditambahkan). Namun, ia juga memiliki operator untuk memotong lebih panjang dari dua string dengan panjang yang lebih pendek.

/   Reflect to SE, switch to Ordinal. The IP bounces diagonally up and down
    through the code.
m   Truncate, doesn't really do anything right now.
I   Read a line of input.
    The IP bounces off the bottom right corner and turns around.
I   Read another line of input.
m   Truncate the longer of the two input lines to the length of the shorter.
+   Superimpose: compute their elementwise maximum. 
o   Output the result.
@   Terminate the program.
Martin Ender
sumber
6

Retina , 28 byte

{O^`
G`.
^.+$

M!\*`^.
Rm`^.

Cobalah online!

Penjelasan

{O^`

The {memberitahu Retina untuk menjalankan seluruh program dalam satu lingkaran sampai gagal mengubah string yang berfungsi. Omenjadikan ini tahap penyortiran yang mengurutkan garis-garis yang tidak kosong secara default. The ^pilihan membalikkan hasilnya. Jadi, pada dasarnya, kita mendapatkan dua baris terbalik jika tidak kosong, menempatkan garis dengan karakter utama yang lebih besar di bagian atas.

G`.

Buang baris kosong jika ada.

^.*$

Jika hanya satu baris yang tersisa, salah satu baris kosong, dan kami menghapus yang lain juga untuk menghentikan proses.

M!\*`^.

Banyak konfigurasi terjadi di sini. Ini cocok dengan ( M) karakter pertama dalam string yang bekerja ( ^.), mengembalikannya ( !), mencetaknya tanpa trafeed linefeed ( \) dan kemudian mengembalikan string yang bekerja ke nilai sebelumnya ( *). Dengan kata lain, kita cukup mencetak karakter pertama dari string yang berfungsi (yang merupakan karakter utama maksimal) tanpa benar-benar mengubah string.

Rm`^.

Akhirnya, kami menghapus karakter pertama dari setiap baris, sehingga iterasi berikutnya memproses karakter berikutnya.

Martin Ender
sumber
Ketika Anda mengomentari seberapa tinggi jawaban monolit saya, terpikir oleh saya bahwa jawaban saya untuk pertanyaan ini terlalu lama, dan mungkin saya mentranspos secara tidak efisien. Setelah melihat bagaimana saran transposisi Anda bekerja, saya memutuskan bahwa itu tidak sesuai untuk pertanyaan ini. Saya kemudian datang dengan pendekatan baru yang menyelamatkan saya 19 byte ... dan kemudian menggulir ke bawah untuk menemukan Anda sudah datang dengan versi yang lebih baik ...
Neil
Anda dapat menyimpan 3 byte karena G`.tidak perlu, meskipun ini menghasilkan baris baru tambahan yang dapat Anda hapus dengan menggunakan ^.+¶$atau dengan awalan a \ke awal jawaban.
Neil
@Neil Oh, bagus. Saya juga bisa menggunakan komit terbaru (yang belum pada TIO dan mungkin tidak akan untuk sementara waktu) di mana saya telah membuat pencetakan tanpa membuntuti linefeeds default (saya kemudian bisa juga menjatuhkan yang lain \).
Martin Ender
6

C, 58 byte

f(char*s,char*t){putchar(*s>*t?*s:*t);*++s&&*++t&&f(s,t);}

Coba Online

  • -8 byte @Steadybox
Khaled.K
sumber
Sial, f(s,t)char*s,*t;{berikan panjang yang sama.
aschepler
6

JavaScript (ES6), 47 45 byte

f=
(a,b)=>a.replace(/./g,(c,i)=>c>b[i]?c:[b[i]])
<div oninput=o.textContent=f(a.value,b.value)><input id=a><input id=b><pre id=o>

Mudah c>b[i]mengembalikan false melewati akhir b. Sunting: Disimpan 2 byte berkat @ETHproductions.

Neil
sumber
Di sini, di ponsel saya bahwa kode di atas tidak dapat dieksekusi. Di PC desktop contoh di atas saya katakan bisa berjalan ok, tetapi tidak mengizinkan untuk mengubah input untuk fungsi ... Mengapa tidak menggunakan Tio sebagai gantinya?
RosLuP
@RosLuP Ketika input sederhana (2 sengatan dalam kasus ini) Saya lebih suka menggunakan Stack Snippet yang biasanya membuatnya lebih mudah untuk mengubah input dan output juga memperbarui secara dinamis.
Neil
5

Jelly , 6 byte

żḊ€ṁ@»

Cobalah online!

Biarawati Bocor
sumber
1
żṢ€Ḋ€dan żṢ€ZṪkeduanya menghemat satu byte.
Dennis
@ Dennis sangat pintar.
Leaky Nun
5

Mathematica, 78 byte

FromCharacterCode[Max/@Thread[#~Take~Min[Length/@x]&/@(x=ToCharacterCode@#)]]&

Ada jawaban lain di Mathematica . Jawaban ini mengambil input sebagai daftar string, sehingga /@dapat digunakan #sebagai ganti {##}. Dan kita bisa hanya Mapnama fungsi panjang pada objek daripada menugaskannya ke variabel. (pada kenyataannya, setiap nama simbol bawaan Matematika digunakan paling banyak sekali dalam fungsi)

pengguna202729
sumber
5

Java 8, 124 120 117 63 byte

a->b->{for(int i=0;;i++)System.out.print(a[i]>b[i]?a[i]:b[i]);}

-4 byte terima kasih kepada @ Khaled.K .
-3 byte terima kasih kepada @Jakob .

Input adalah dua array karakter, dan berhenti dengan ArrayIndexOutOfBoundsException.

Penjelasan:

Coba di sini.

a->b->{                       // Method with two char-array parameters and no return-type
  for(int i=0;;i++)           //  Loop `i` from 0 up indefinitely (until an error is given)
    System.out.print(         //   Print:
      a[i]>b[i]?a[i]:b[i]);}  //    The character that has the highest unicode value
Kevin Cruijssen
sumber
4

C #, 81 78 byte

a=>b=>{var s="";try{for(int q=0;;q++)s+=a[q]>b[q]?a[q]:b[q];}catch{}return s;}

C # memiliki implisit charuntuk intkonversi (karena charsebenarnya adalah di intbawahnya) yang bagus, dan alih-alih mencari string terpendek coba saja sampai gagal

LiefdeWen
sumber
1
Kalahkan aku! Namun, simpan satu byte dengan currying a=>b=>dengan mengkompilasi ke a Func<string, Func<string, string>>. Anda dapat menghapus kawat gigi di sekitar loop untuk menyimpan 2 byte.
TheLethalCoder
Catatan: C# has implicit char to int conversionbenar karena a charadalah di intbawahnya.
TheLethalCoder
@TheLethalCoder: Tidak cukup. sizeof(int) == 4tapi sizeof(char) == 2.
rekursif
4

MATL , 8 byte

otX>cwA)

Input adalah array sel string, dalam format {'abcd' 'efg'}

Cobalah online!

Selain itu, ini juga berfungsi untuk lebih dari dua string .

Penjelasan

Pertimbangkan input {'blended' 'bold'}. Tumpukan ditampilkan terbalik, dengan elemen yang lebih baru di bawah ini.

o    % Implicitly input a cell array of strongs. Convert to numeric
     % vector of code points. This right-pads with zeros if needed
     %   STACK: [98 108 101 110 100 101 100;
                 98 111 108 100   0   0   0]
tX>  % Duplicate. Maximum of each column
     %   STACK: [98 108 101 110 100 101 100;
                 98 111 108 100   0   0   0],
                [98 111 108 110 100 101 100]
c    % Convert to char
     %   STACK: [98 108 101 110 100 101 100;
                 98 111 108 100   0   0   0],
                'bolnded'
w    % Swap
     %   STACK: 'bolnded'
                [98 108 101 110 100 101 100;
                 98 111 108 100   0   0   0]
A    % All: gives true (shown as 1) for columns containing only nonzeros
     %   STACK: 'bolnded'
                [1 1 1 1 0 0 0]
)    % Use as logical index (mask). Implicitly display
     %   STACK: 'boln'
Luis Mendo
sumber
4

R, 103 byte

Kode:

n=min(sapply(y<-strsplit(scan(,"",sep="\n"),""),length));cat(mapply(max,el(y)[1:n],y[[2]][1:n]),sep="")

Kasus uji:

> n=min(sapply(y<-strsplit(scan(,"",sep="\n"),""),length));cat(mapply(max,el(y)[1:n],y[[2]][1:n]),sep="")
1: programming puzzles & code golf!?
2: not yet graduated, needs a rehaul
3: 
Read 2 items
prtgretmirgduuzzlesneedsde rolful
> x <- scan(,"",sep=NULL)
1: asd asd 
3: 
Read 2 items
> n=min(sapply(y<-strsplit(scan(,"",sep="\n"),""),length));cat(mapply(max,el(y)[1:n],y[[2]][1:n]),sep="")
1: king
2: object
3: 
Read 2 items
oing
> n=min(sapply(y<-strsplit(scan(,"",sep="\n"),""),length));cat(mapply(max,el(y)[1:n],y[[2]][1:n]),sep="")
1: lab0ur win.
2: the "super bowl"
3: 
Read 2 items
the0usuwir.
djhurio
sumber
Hah? Max bekerja seperti itu? TIL
JAD,
1
79 byte!
Giuseppe
4

Python 2 , 47 44 34 byte

-3 byte terima kasih kepada musicman523. -10 byte terima kasih kepada Blender.

Mengambil input sebagai daftar string.

lambda a:''.join(map(max,zip(*a)))

Cobalah online!

benar-benar manusiawi
sumber
4

V , 28, 24 , 21 byte

Í./&ò
dd{JdêHPÎúúx
Íî

Cobalah online!

Hexdump:

00000000: cd2e 2f26 f20a 6464 7b4a 64ea 4850 cefa  ../&..dd{Jd.HP..
00000010: fa78 0acd ee                             .x...

Tiga byte disimpan berkat @ nmjcman101!

Penjelasan:

Í             " Globally substitute:
 .            "   Any character
  /           " With:
   &          "   That character
    ò         "   And a newline
dd            " Delete this line
  {           " Move to the first empty line
   J          " Delete this line
    dê        " Columnwise delete the second word
      HP      " Move to the first line, and paste the column we just deleted
        Î     " On every line:
         úú   "   Sort the line by ASCII value
           x  "   And delete the first character
Í             " Remove all:
 î            "   Newlines
DJMcMayhem
sumber
Apakah itu dGperlu? Bukankah semua baris baru dihapus dengan Íîanyways?
nmjcman101
@ nmjcman101 Diperlukan jika string panjangnya berbeda.
DJMcMayhem
3

CJam , 12 byte

q~z{1/~e>o}%

Input adalah daftar dua string. Program keluar dengan kesalahan (setelah menghasilkan output yang tepat) jika kedua string memiliki panjang yang berbeda.

Cobalah online!

Penjelasan

q~              e# Read input and evaluate
  z             e# Zip: list of strings of length 2, or 1 if one string is shorter
   {      }%    e# Map this block over list
    1/          e# Split the string into array of (1 or 2) chars
      ~         e# Dump the chars onto the stack
       e>       e# Maximum of two chars. Error if there is only one char
         o      e# Output immediately, in case the program will error
Luis Mendo
sumber
3

Clojure, 31 byte

#(map(comp last sort list)% %2)

Yay untuk komposisi fungsi :) Mengembalikan urutan karakter alih-alih string, tetapi sebagian besar bekerja dengan cara yang sama di Clojure kecuali saat mencetak atau mencocokkan regex.

Sedihnya maxtidak bekerja dengan karakter.

NikoNyrh
sumber
maxtidak bekerja, tetapi max-keytidak. #(map(partial max-key int)% %2)Ini adalah jumlah byte yang sama persis.
madstap
Oh keren, saya sudah lupa tentang itu. Jauh lebih sederhana daripada misalnya (ffirst (sort-by second ...).
NikoNyrh
3

Javascript (ES2015), 66 63 49 byte

a=>b=>[...a].map((c,i)=>c>b[i]?c:b[i]||'').join``

Penjelasan:

a=>b=>                       // Function with two string parameters
  [...a]                     // Split a into array of characters
    .map((c, i) =>           // Iterate over array
      c>b[i] ? c : b[i]||'') //   Use the character with the larger unicode value until the end of the larger string
    .join``                  // Join the array into a string

Versi sebelumnya:

//ES2015
a=>b=>[...a].map((c,i)=>c>b[i]?c:b[i]).slice(0,b.length).join``    //63
a=>b=>a.split``.map((c,i)=>c>b[i]?c:b[i]).slice(0,b.length).join`` //66
a=>b=>a.split``.map((c,i)=>c>b[i]?c:b[i]).slice(0,Math.min(a.length,b.length)).join``   //85
a=>b=>{for(i=-1,c='';++i<Math.min(a.length,b.length);)c+=a[i]>b[i]?a[i]:b[i];return c}  //86
a=>b=>{for(i=-1,c='';++i<Math.min(a.length,b.length);)c+=a[d='charCodeAt'](i)>b[d](i)?a[i]:b[i];return c}   //105
a=>b=>a.split``.map((c,i)=>c[d='charCodeAt']()>b[d](i)?c:b[i]).slice(0,Math.min(a.length,b.length)).join``  //106

//With array comprehensions
a=>b=>[for(i of a.split``.map((c,i)=>c>b[i]?c:b[i]))i].slice(0,b.length).join``                             //79
a=>b=>[for(i of a.split``.map((c,i)=>c>b[i]?c:b[i]))i].slice(0,Math.min(a.length,b.length)).join``          //98
a=>b=>[for(i of ' '.repeat(Math.min(a.length,b.length)).split``.map((_,i)=>a[i]>b[i]?a[i]:b[i]))i].join``   //105
a=>b=>[for(i of Array.apply(0,Array(Math.min(a.length,b.length))).map((_,i)=>a[i]>b[i]?a[i]:b[i]))i].join`` //107
a=>b=>[for(i of a.split``.map((c,i)=>c[d='charCodeAt']()>b[d](i)?c:b[i]))i].slice(0,Math.min(a.length,b.length)).join``        //119
a=>b=>[for(i of ' '.repeat(Math.min(a.length,b.length)).split``.map((_,i)=>a[d='charCodeAt'](i)>b[d](i)?a[i]:b[i]))i].join``   //124
a=>b=>[for(i of Array.apply(0,Array(Math.min(a.length,b.length))).map((_,i)=>a[d='charCodeAt'](i)>b[d](i)?a[i]:b[i]))i].join`` //127
andrewarchi
sumber
Selamat datang di PPCG! Posting pertama yang bagus!
R
3

Retina , 55 36 byte

^
¶
{O`¶.*
}`¶.(.*)¶(.)
$2¶$1¶
1!`.*

Cobalah online! Penjelasan: Baris diawali untuk menampung hasilnya. Sementara kedua string masih memiliki karakter yang tersisa, input diurutkan dan karakter utama dengan titik kode tertinggi dipindahkan ke hasil sementara karakter utama lainnya dihapus. Akhirnya hasilnya dicetak.

Neil
sumber
3

Sekam , 2 byte

z▲

Cobalah online!

"Tidak Disatukan" / Dijelaskan

Memanfaatkannya zip fmemotong daftar yang lebih pendek sehingga selalu ada dua argumen untuk f, misalnya zip f [1,2] [3,4,5] == zip f [1,2] [3,4] == [f 1 3, f 2 4]:

z   -- zip the implicit lists A,B with  - e.g. "ab" "bcd" (lists of characters)
 ▲  -- maximum                          -      [max 'a' 'b', max 'b' 'c']
    -- implicitly print the result      -      "bc"
ბიმო
sumber
3

Kotlin, 50 41 37 byte

-9 byte dengan sintaks referensi fungsi -4 byte dengan fungsi ekstensi

fun String.x(o:String)=zip(o,::maxOf)

Jika s, dan x berada dalam ruang lingkup, dan tidak dalam suatu fungsi, metode ini hanya 16 byte

s.zip(x,::maxOf)

Demo

Redrield
sumber
Berikut tautan try.kotlinlang.org: try.kotlinlang.org/#/UserProjects/ulm4nriigeio44jq1sdqer9sg2/…
Kirill Rakhman
2

PowerShell, 75 byte

-join(1..(($a,$b=$args)|sort l*)[0].length|%{(,$a[$_-1],$b[$_-1]|sort)[1]})
#            ^input array unpack
#       ^string index generation offset by 1
#                         ^sort by length property, so output length matches shorter input
#                                           ^loop over indices
#                                       max of the two characters^
# ^output join

Simpan sebagai file .ps1 dan jalankan

PS C:\> .\Get-MultipliedString.ps1 'hello,' 'world!'
worlo,

Sebelumnya, 78 byte:

$i=0;-join$(while(($a=$args[0][$i])-and($b=$args[1][$i++])){($a,$b)[$b-gt$a]})
TessellatingHeckler
sumber
2

J, 25 byte

>./&.(a.&i.)@(<.&#{."1,:)

penjelasan

setengah dari byte digunakan untuk menyelesaikan memastikan kedua input memiliki panjang input yang lebih pendek (akan senang melihat peningkatan pada bagian ini, jika ada yang memilikinya):

(<.&#{."1,:)

<.&#adalah minimum dari dua panjang, dan {."1,:mengambil banyak karakter dari kedua baris dari tabel 2-baris yang terdiri dari string kiri ditumpuk di atas yang kanan.

>./&.(a.&i.)

Gunakan kata kerja Di Bawah &.untuk mengonversikan setiap karakter ke indeks ascii-nya, ambil maksimum dua angka, dan kemudian konversikan kembali ke karakter.

Cobalah online!

Jonah
sumber
1
21 byte[:>./&.(3&u:)<.&#$&>;
mil
@ Miles, kombinasi elegan antara kereta dan konjungsi - saya perlu menggunakan trik itu lebih banyak untuk menghindari parens. juga u:merupakan TIL untuk saya.
Jonah
2

Koleksi Java 8 + Eclipse, 70 64 byte

a->b->a.zip(b).collect(p->(char)Math.max(p.getOne(),p.getTwo()))

adan bkeduanya MutableList<Character>dari koleksi gerhana.

Nathan Merrill
sumber
2

Tambahkan ++ , 8 byte

D,f,@@,^

Cobalah online!

Dalam versi 0.4 hingga 1.11, ^eksponen dua angka atau "mengalikan" dua string, tergantung pada jenis argumen.

caird coinheringaahing
sumber
Ini agak bertentangan dengan semangat kode-golf, untuk mengirim pertanyaan mengetahui bahwa bahasa Anda sendiri (yang tidak digunakan orang lain) memiliki built-in yang memberikan monopoli. Syukurlah, keringkasan Jelly menang lagi.
FlipTack
12
@FlipTack apakah Anda membaca baris pertama pertanyaan? Bahkan jika ini 0 byte, itu tidak akan menang.
caird coinheringaahing
1
@StephenS Tampaknya fitur tersebut menginspirasi tantangan, bukan sebaliknya. Label yang tidak bersaing dicadangkan untuk jawaban yang menggunakan bahasa atau fitur yang hanya diterapkan setelah tantangan.
Martin Ender
1

Mathematica, 102 byte

T=ToCharacterCode;L=Length;(a=T@#;b=T@#2;FromCharacterCode@Table[Max[a[[i]],b[[i]]],{i,L@a~Min~L@b}])&


memasukkan

["blended", "bold"]

J42161217
sumber
L@a~Min~L@bmenghemat satu byte
Greg Martin
1

APL (Dyalog) , 22 byte

Mengambil dua (atau lebih!) String sebagai argumen yang benar.

{⎕UCS⌈⌿⎕UCS↑⍵↑¨⍨⌊/≢¨⍵}

Cobalah online!

{ fungsi anonim di mana argumen yang tepat diwakili oleh

⎕UCS simbol dari U nicode C haracter S et yang sesuai dengan

⌈⌿ nilai maksimum di setiap kolom

⎕UCS poin kode dari U nicode C haracter S et untuk

 matrified (matriks dari daftar string)

 argumen

↑¨⍨ masing-masing dibatasi pada

⌊/ minimum

≢¨ panjangnya

 argumen

}

Adm
sumber