Diberikan alamat email, hasil transformasi yang diterapkan ke alamat email itu, dan alamat email kedua, kembalikan output dari transformasi yang sama yang diterapkan ke alamat email kedua.
Semua alamat email memiliki struktur sebagai berikut:
Untaian panjang positif berisi karakter alfanumerik dan paling banyak satu .
(bagian lokal), diikuti oleh @
simbol, diikuti oleh untaian panjang positif yang berisi sumban alfanumerik (domain), diikuti oleh .
simbol, dan string akhir panjang positif mengandung karakter alfanumerik (TLD).
Ada empat transformasi yang diizinkan:
- Identitas (tidak ada perubahan). (
[email protected] -> [email protected]
) - Mengembalikan hanya bagian lokal (semuanya sebelum
@
) yang tidak dimodifikasi ([email protected] -> a.b
). - Mengembalikan perpecahan bagian lokal pada
.
if hadir, dengan simbol pertama dari setiap setengah dikapitalisasi. ([email protected] -> A B
). - Mengembalikan domain saja (semuanya antara
@
dan final.
) tidak dimodifikasi. ([email protected] -> c
).
Ketika lebih dari satu transformasi dimungkinkan, Anda dapat memberikan output dari salah satu kemungkinan. Spasi pada awal dan akhir output tidak masalah, tetapi di tengah tidak (yaitu jika Anda membagi a.b
ke A B
harus ada hanya satu ruang di tengah [dan angka apa pun di awal dan akhir output], tetapi jika Anda membagi a.
, maka A
dengan sejumlah ruang di kedua sisi semuanya dapat diterima).
Contoh ( input | output
):
[email protected], John Doe, [email protected] | Phillip Maini
[email protected], John Doe, [email protected] | Phillip Maini
[email protected], foo.bar, [email protected] | gee.whizz
[email protected], foo.bar, [email protected] | gEe.Whizz
[email protected], comedy, [email protected] | office
[email protected], Jones, [email protected] | A
[email protected], [email protected], [email protected] | [email protected]
[email protected], .jones, [email protected] | a.
[email protected], x, [email protected] | 3
[email protected], [email protected], [email protected] | [email protected]
[email protected], John Jones, [email protected] | 1in Thehand
[email protected], Chicken Soup, [email protected] | Fab
[email protected], lange, [email protected] | fat.so
[email protected], Lange, [email protected] | {fat.so, Fat So} # either acceptable
[email protected], chicken, [email protected] | {horse, pig} # either acceptable
Aturan dan celah biasa berlaku.
@
dan final.
). Karena bagian dan domain keduanya sama-samachicken
ambigu, apakah ini transformasi ke-2 atau ke-4A
[dengan spasi tambahan] bahwa input kedua menjadiJones
[dengan spasi terdepan])?[email protected], Jones, [email protected]
iniA
- jikajones
cocok itu berarti bagian yang cocok adalah bagian antara periode pertama dan simbol @. Tapi itu akan menghasilkan string kosong karenaa
sebelum periode pertama dan bukan setelah.Jawaban:
Java 8,
254240236 byte-4 byte terima kasih kepada @LukeStevens .
Penjelasan:
Coba di sini.
sumber
(p.charAt(0)+"").toUpperCase()
alih-alihCharacter.toUpperCase(p.charAt(0))
.(char)(p.charAt(0)&~32)
Awalnya saya punya , tetapi ini tidak berhasil karena1in Thehand
test case. Tapi menjadikannya sebagai string memang lebih pendek dari ituCharacter.toUpperCase
, jadi terima kasih!Haskell , 208 byte
Cobalah online!
Sangat menyedihkan saya harus menghabiskan 59 byte pada reinventing
split
(s
).Solusi ini membuat daftar transformasi dan mengembalikan yang pertama yang mengarah ke hasil yang diharapkan.
sumber
Jelly , 40 byte
Pre-emptive berkat Erik yang Outgolfer untuk memperhatikan kegagalan menggunakan
Œt
(judul-kasus) dan karenanyaŒu1¦€K
lebihŒtK
-1 byte terima kasih kepada Erik the Outgolfer (pengaturan ulang
⁵⁸ç⁹¤Ŀ
untukçµ⁵⁸Ŀ
)Sebuah program taking penuh
exampleEmail
,exampleOutput
,realEmail
dan mencetak hasilnya.Cobalah online!
Bagaimana?
Lakukan keempat transformasi (ditambah satu prekursor), temukan yang pertama yang menghasilkan contoh dari email pertama, lalu terapkan ke email kedua:
Catatan:
Mengasumsikan input exampleOutput benar-benar sama dengan outputnya.
"Prekursor" (hasil tautan 3) diuji untuk mencocokkannya
exampleOutput
, tetapi tidak akan cocok kecuali jikaexampleOutput
itu sendiri adalah daftar daftar karakter. Karena itu inputnya mungkin harus dikutip (format Python dapat digunakan di sini) untuk menghindari kemungkinan menafsirkannya seperti itu.sumber
Python 2 , 135 byte
Cobalah online!
sumber
JavaScript (ES6), 145 byte
Aktifkan dengan sintaks currying, mis
f('[email protected]')('Chicken Soup')('[email protected]')
Tampilkan cuplikan kode
sumber
Mathematica, 217 byte
Cobalah online!
sumber
Ruby ,
117106102 byteCobalah online!
sumber
CJam, 42
Cobalah online
Penjelasan:
sumber
PHP 7.1, 176 byte
Cobalah online!
PHP <7.1, 180 byte
Versi di bawah 7.1 perlu mengubah
[,$p,$q,$r]=$argv
tolist(,$p,$q,$r)=$argv
, menambahkan 4 byte.sumber
GNU sed , 105 +1 (r flag) = 106 byte
Tiga
s
perintah pertama masing-masing memeriksa identitas , bagian lokal dan transformasi domain . Jika satu transformasi cocok, maka diterapkan ke alamat email kedua dans
perintah berikut akan gagal karena kurangnya format input.Cobalah online!
Itu Bagian perpecahan lokal transformasi (terakhir
s
perintah) adalah yang paling mahal untuk memeriksa, dalam hal byte, karena itu saya ditempatkan di akhir dan diasumsikan cocok (karena yang lain gagal pada saat itu), akan langsung ke aplikasinya.sumber
Jeli , 43 byte
Cobalah online!
sumber
ŒtK
berhasil menggantikanŒu1¦€K
3?Œl
?1in.thehand
tidak akan berhasilŒtK
.str.title
).