Eksposisi
Setelah memenangkan undian SO, Anda bisa berada di puncak dunia, dan Anda berada di puncak! Undian telah berlangsung selama satu tahun, sekarang, dan Anda adalah satu dari seratus programmer yang dipilih untuk masuk ke dalam benteng SO. Dan akhirnya, penantian berakhir. Hari ini adalah hari Anda pergi ke - [hasil teks kabur].
Aduh. Maaf, seharusnya tidak memberi tahu.
Bagaimanapun, Anda akhirnya tiba untuk bertemu seorang pria berwajah tabah dalam setelan hitam dengan lambang SO kecil di atasnya. Dia mengerutkan keningmu. "Yang lain sudah di dalam," katanya, mencatat bahwa kamu telah diidentifikasi di gerbang. "Segera."
Anda bergegas masuk, sedikit ketakutan. Apa yang sebenarnya terjadi? Apa yang salah pada SO? Di dalam, Anda mengamati 99 programmer lain sedang menatap layar mereka, mengetik. Anda mengambil kursi yang tersisa, dan disambut dengan pesan berikut:
Halo, programmer! Tampaknya kami mengalami masalah; SO telah ditembus, oleh siapa kita tidak tahu. (Secara pribadi, saya menduga itu adalah programmer Pyth atau CJam, tapi hei.) Namun, semua yang dirugikan adalah editor Markdown. Sebenarnya, itu cukup banyak, tetapi di situlah Anda masuk.
Saya ingin Anda membuat program (atau fungsi, kami tidak pilih-pilih) yang akan menafsirkan file penurunan harga dan mengonversinya ke "SO Beautifier-Arity" baru kami -Decomposer "(alias" SOBAD ") format. Anda harus melakukan ini dalam jumlah byte terpendek - kami menjalankan pada saat downdown sampai kami menyelesaikan masalah peretasan ini. Terima kasih atas waktu Anda, dan semoga sukses!
Hormat kami,
Pembuat Stack Overflow
Objective Diberikan file penurunan harga yang valid sebagai input untuk kiriman Anda, melakukan dan output transformasi berikut pada input:
(Ketika saya menggunakan +
simbol, maksud saya operator RegExp "satu atau lebih contoh karakter sebelumnya", bukan tanda plus literal.)
- Ubah semua tajuk Level 1 (
# ...
atau...\n=+
) menjadi{ ... }
, dengan...
menjadi SEMUA CAPS. - Ubah semua tajuk Level 2 (
## ...
atau...\n-+
) menjadi{{ ... }}
, dengan setiap kata menggunakan huruf kapital - Ubah semua header Level 3 (
### ...
) menjadi huruf kecil; artinya, semua huruf (tidak peka huruf besar kecil) dipetakan sesuaiᴀʙᴄᴅᴇғɢʜɪᴊᴋʟᴍɴᴏᴘǫʀsᴛᴜᴠᴡxʏᴢ
mode masing-masing. - Ubah semua instance berani (
**...**
) menjadi...
, dengan...
menjadi ALL CAPS. - Ubah semua instance italic (
_..._
) menjadi. . .
, tempat spasi telah disisipkan di antara setiap pasangan karakter. - Ubah semua instance kode (
`...`
) menjadi< ... >
. - Ubah semua instance dicoret (
---...---
) menjadi-.-.-.-
, di mana a-
telah disisipkan di antara setiap pasangan karakter. - Transform semua daftar contoh bernomor (
N. {a}\nN. {b} ...
di manaN
cocok dengan regex[0-9]+
) ke (1. {a}\n 2. {b}...
) - Ubah semua instance daftar yang tidak terurut (
* ...\n* ...
...) menjadi (o ...\n o ...
...)
Keterangan lebih lanjut
- Contoh header dan daftar hanya akan ditemukan di awal baris, namun, mereka mungkin dikelilingi oleh sejumlah spasi putih.
- Akan ada ada terkait kasus, misalnya,
*a_*a_
tidak berlaku untuk standar kami, juga akan sesuatu seperti__a__
,*_a_*
, atau_*a*_
muncul dalam sebuah masukan. - Header multiline valid jika dan hanya jika
-
atau=
s secara langsung mengikuti baris teks. - Header tidak akan berisi entitas penurunan harga lainnya. Misalnya,
# `code` snippet
bukan input yang valid untuk tujuan kita - Anda tidak harus memperhitungkan tajuk Level 4+
- Anda tidak harus menyimpan spasi berlebih (yaitu
> 1
spasi) di dalam file, jadi tidak masalah**hello there**
untuk menjadi**hello there**
tetapi tidak**hellothere**
. Demikian pula, jejak dan ruang terdepan yang ditemukan pada garis tidak harus dilestarikan - Tabulator tidak akan ditemukan di input.
- TIDAK AKAN ADA INSTAN YANG TERKAIT. Misalnya,
***...***
tidak akan pernah terjadi. - Sebuah ruang akan selalu mengikuti titik peluru yang tidak berurutan (Misalnya,
* ...
tidak*...
) - Daftar item dalam daftar yang dipesan dan tidak berurutan akan selalu terdiri dari satu baris.
- Pasangan karakter yang tidak cocok harus diabaikan. Misalnya,
** cool
dan`java::def
harus tetap sama.
Metode input
Input harus salah satu dari yang berikut:
- Array / tuple / daftar / dll. string.
- ATAU string yang berisi baris baru untuk memisahkan baris.
Gunakan bahasa Anda yang setara dengan tipe data yang disebutkan di atas jika bahasa Anda tidak mendukungnya. (Misalnya, TI-BASIC tidak mendukung (1.) ... bukan berarti TI-BASIC dapat bersaing, bagaimanapun: P).
Uji kasus
A }
menandakan input, dan baris berikutnya menandakan output. Beberapa }
s menandakan baris teks yang dipisahkan baris baru.
} Hello!
Hello!
} That _2 + 2 = 5_ challenge sure was **intense!**
That 2 + 2 = 5 challenge sure was INTENSE!
// note that there are spaces also padding it
} It's `s/a/e/g` **not** `sudo g/a/e/s`, stupid.
It's < s/a/e/g > NOT < sudo g/a/e/s >
} **WHAT!** He did _WHAT?!_
WHAT! He did W H A T ? !
} _WHAT_ is undefined, here!
W H A T is undefined, here!
} OI)(EJDSFIJK L:JP #@*REF&WDS F*(D+S +&(SDFWEF )DSF _DSF_F #R#
OI)(EJDSFIJK L:JP #@*REF&WDS F*(D+S +&(SDFWEF )DSF D S F F #R#
} # So, you wanna be a programmer, eh?
} ## Step 1: learn recursion
} ### Learning recursion requires learning recursion
} **Programming** is a futile task. _Leave w h i l e you still can!_
{SO YOU WANNA BE A PROGRAMMER, EH?}
{{Step 1: Learn Recursion}}
ʟᴇᴀʀɴɪɴɢ ʀᴇᴄᴜʀsɪᴏɴ ʀᴇǫᴜɪʀᴇs ʟᴇᴀʀɴɪɴɢ ʀᴇᴄᴜʀsɪᴏɴ
PROGRAMMING is a futile task. L e a v e w h i l e y o u s t i l l c a n ! // trailing space not required
} Haha, you're a _Java_ golfer? You'd be better of with brainf***.
Haha, you're a J a v a golfer? You'd be better of with brainf***. // less than four asterisks, do nothing
} # Reasons why NOT to use C--:
} 1. It doesn't exist.
} 2. I don't care.
{REASONS WHY NOT TO USE C--:}
1. It doesn't exist.
2. I don't care.
} 1. This is a test!
} 1. <-- And this actually works in Markdown.
1. This is a test!
2. <-- And this actually works in Markdown. // less than three -s, ignore
} * no.
} * NOOO.
} * fine.
o no.
o NOOO.
o fine.
} Python, ---34--- 3 bytes.
Python, -3-4- 3 bytes.
} ---Long line of crossed text.---
-L-o-n-g- -l-i-n-e- -o-f- -c-r-o-s-s-e-d- -t-e-x-t-.-
} ** cool!
** cool! // is not a bullet point, because a space doesn't follow the *; Isn't bold, because there is no matching **
-- end of test cases --
Bonus
- -19 byte jika Anda mendukung pelolosan karakter (sehingga mereka diperlakukan sebagai "normal"); Anda dapat memilih karakter pelarian, tapi saya sarankan
\
atau^
. Perhatikan bahwa sistem pelolosan pada situs SO berbeda dari apa yang saya sarankan (dan lebih rumit), jadi jangan lakukan itu! SO akan memperlakukan`\`
sebagai\
, tetapi saya ingin Anda memperlakukan yang kedua`
sebagai karakter biasa, dan sebagai gantinya cocok dengan karakter berikutnya`
.
***word***
menjadi* * w o r d * *
setelah Anda menerapkan transformasi miring, dan tiba-tiba transformasi tebal tidak berlaku. Tidak jelas bagaimana menangani ini.Jawaban:
Python 3 ,
652640 byteCobalah online!
sumber