Tujuan Anda adalah memasukkan teks arbitrer, seperti:
This is some text
Dan output teks yang diformat sebagai kode untuk posting (Markdown rasa SE) dan komentar (Markdown mini) di Stack Exchange, seperti:
`This is some text`
`This is some text`
Namun, itu semakin rumit. Pertimbangkan input:
Perl has a variable called $`
Outputnya harus
`` Perl has a variable called $` ``
`Perl has a varaible called $\``
Aturan lengkap untuk pemformatan adalah:
Posting lengkap (Markdown SE penuh)
Langkah 1: hitung jumlah terkecil yang tidak ada banyak backtick berturut-turut dalam string. Sebut ini
n
. (Misalnya, untuk stringpotato
,n
adalah 1, untukthis is a backtick: `
,n
adalah 2, dan untuk` `` ``` ````` ``````
,n
adalah 4.)Langkah 2: bungkus string dalam
n
backticks. Jika string dimulai atau diakhiri dengan backtick, Anda juga harus membungkusnya dengan spasi. (Misalnya,potato
menjadi`potato`
,this is a backtick: `
menjadi`` this is a backtick: ` ``
, dan` `` ``` ````` ``````
menjadi```` ` `` ``` ````` `````` ````
.
Komentar (Mini-Markdown)
- Bungkus
`
dan lepaskan semuanya`
dengan\`
. (Misalnya,potato
menjadi`potato`
,this is a backtick: `
menjadithis is a backtick: \`
, dan` `` ``` ````` ``````
menjadi\` \`\` \`\`\` \`\`\`\`\` \`\`\`\`\`\`
.
- Bungkus
Ini adalah kode-golf ; jawaban terpendek dalam hitungan byte menang.
\
; untuk memformat\
, yang perlu Anda lakukan``\``
. Juga, apa pun yang berakhir dengan\
berjalan ke masalah yang sama:asdf\
menghasilkan `asdf`Jawaban:
APL (90)
(Ya, rangkaian aplikasi APL cocok dengan satu byte, inilah codepage 907 IBM .)
Ini adalah fungsi yang mengambil string, dan mengembalikan array dari dua string, di mana string pertama adalah representasi komentar dan string kedua adalah representasi posting penuh .
Tes:
Catatan: Saya memberi nama fungsi untuk keterbacaan, fungsi ini tidak sepenuhnya diperlukan untuk menggunakannya (Anda bisa menempatkan argumen di sebelah fungsi anonim) jadi saya tidak menghitungnya.
sumber
Ruby, 119
Tidak Disatukan:
sumber