Pernah membayangkan membuat hashtag keren seperti #brexit atau #brangelina ? golf ini untukmu.
Tulis program yang menerima dua string A & B sebagai input dan gabungkan mereka sesuai dengan algoritma berikut:
- biarkan
n
menjadi jumlah grup vokal di A (misalnyabritain
memiliki 2 grup vokal:i
di posisi 3 danai
di posisi 5).- jika n = 1: memotong A mulai dari posisi grup vokal pertamanya (contoh:
bill
=>b
) - jika n> 1: memotong A mulai dari
n-1
posisi grup vokal ke -3 (contoh:programming
=>progr
,britain
=>br
)
- jika n = 1: memotong A mulai dari posisi grup vokal pertamanya (contoh:
- hapus semua konsonan di awal B (
jennifer
=>ennifer
) - menggabungkan A & B yang dimodifikasi
Vokal adalah aeiou
; konsonan adalah bcdfghjklmnpqrstvwxyz
.
Memasukkan
Anda dapat mengasumsikan string input lebih kecil dan mengandung setidaknya satu vokal dan satu konsonan.
Contohnya
brad + angelina => brangelina
britain + exit => brexit
ben + jennifer => bennifer
brangelina + exit => brangelexit
bill + hillary => billary
angelina + brad => angelad
programming + puzzle => progruzzle
code + golf => colf
out + go => o
donald trump
.Django + Angular = Djular
Jawaban:
Ruby,
444340 + 1 = 41 byte+1 byte untuk
-p
bendera. Mengambil input yang dipisahkan ruang pada STDIN.-1 byte terima kasih kepada Martin Ender
-2 byte terima kasih kepada histocrat
Cobalah online!
GNU sed,
3937 + 1 = 38 byte+1 byte untuk
-E
bendera. Mengambil input yang dipisahkan ruang pada STDIN.-1 byte terima kasih kepada Martin Ender
Cobalah online!
Tidak memposting ini sebagai jawaban terpisah karena secara harfiah solusi yang sama.
sumber
[^aeiou]
sebagai subekspresi:/([aeiou]+([^aeiou]*)){,2} \g<2>/
ruby -e "..."
. Untuk iniruby -pe "..."
, jadi hanya menambah satu byte.MATL,
3130 byteCobalah secara Online
Penjelasan
sumber
JavaScript (ES6),
817372 byteDisimpan 8 byte berkat @Jordan, 1 terima kasih ke @DavidConrad
Meskipun
.match
mengembalikan array,array+array
mengembalikan string dengan isi array yang disatukan (yaitu[0]+[1]
mengembalikan"01"
).Cuplikan tes
Tampilkan cuplikan kode
Solusi Ruby unggulan Jordan adalah 53 byte di JS:
sumber
(a,b)=>
untuka=>b=>
menyimpan 1 byte.Jelly ,
2322 byteTryItOnline
Bagaimana?
sumber
PowerShell v2 +, 76 byte
Rupanya ini adalah regex yang populer ... ;-)
Menggunakan
-replace
operator untuk menarik bagian-bagian yang sesuai, lalu merangkai-bersama hasilnya. Menambahkan a$
ke yang pertama untuk memastikan kami menarik ujung tali, dan menambahkan a^
ke yang kedua untuk memastikan kami menarik bagian depan tali.sumber
Retina , 35 byte
Cobalah online! (Baris pertama memungkinkan suite tes yang dipisahkan dengan linefeed.)
Cukup hapus semua kecocokan regex di baris pertama.
sumber
/^((\(\g<1>\))*)$/
di Ruby.Cinnamon Gum, 23 byte
Cobalah online.
Penjelasan
Ini didekompresi ke
d([aeiou]+[^aeiou]*)([aeiou]+[^aeiou]*)? [^aeiou]*
, yangd
menghapus apa pun yang cocok dengan regex itu. (Perhatikan bahwa pegolf Jordand([aeiou]+[^aeiou]*){,2} [^aeiou]*
mengompres hingga 24 byte karena kurangnya elemen berulang untuk kompres.)sumber
d[aeiou]+[^aeiou]*[aeiou]*[^aeiou]* [^aeiou]*
akan lebih pendek?PHP, 95 Bytes
dengan preg_match alih-alih preg_filter 110 Bytes
sumber
+
bukan{1,2}
.$v=aeiou;
untuk menyimpan 3 lagi.Lua, 66 byte
sumber
Perl 5, 39 byte
38, ditambah 1 sebagai
-pe
ganti-e
Ujung topi.
sumber
Python 2, 139 byte
Yang ini sulit.
Lihat di repl.it
sumber
Lithp , 65 byte
Ini pada dasarnya adalah port dari jawaban JavaScript di atas, dalam bahasa pemrograman fungsional Lisp-ish saya.
Contoh penggunaan:
Belum ada juru bahasa online. Saya akan memberikan satu segera. Tidak akan sulit, bahasa saya ditulis dalam JavaScript.
Alih-alih, solusi teka-teki ini diterapkan sebagai contoh kerja untuk bahasa saya. Itu dapat dijalankan dengan perintah berikut:
sumber
Haskell,
111108 byteSolusi non-regex ini ternyata lebih lama dari yang diharapkan. Tetap ide saja.
sumber
Jq 1,5 , 45 byte
Tidak ada yang istimewa, hanya pelabuhan msh210 solusi perl 's untuk JQ ini PCRE.
Cobalah online!
sumber
Japt , 18 byte
Cobalah online!
Port langsung dari solusi JS pendek yang pada gilirannya adalah port dari solusi Ruby Jordan .
Bagaimana itu bekerja
sumber