นิทรรศการ
หลังจากชนะการจับฉลากดังนั้นคุณน่าจะอยู่ในอันดับต้น ๆ ของโลกและคุณก็เป็น! ล็อตเตอรี่ได้ดำเนินมาเป็นปีแล้วและคุณเป็นหนึ่งในโปรแกรมเมอร์หนึ่งร้อยคนที่ได้รับเลือกให้เข้าสู่ฐานที่มั่นดังนั้น และในที่สุดการรอคอยก็จบลง วันนี้เป็นวันที่คุณไปที่ - [ข้อความที่ยุ่งเหยิงไปหมดแล้ว]
อ๊ะ ขออภัยไม่ควรบอก
อย่างไรก็ตามในที่สุดคุณก็มาถึงเพื่อพบกับชายที่อดทนในชุดสูทสีดำพร้อมกับมีตราสัญลักษณ์ขนาดเล็กอยู่บนนั้น เขาขมวดคิ้วใส่คุณ “ คนอื่นอยู่ข้างในแล้ว” เขาพูดโดยสังเกตว่าคุณถูกระบุที่ประตู "อย่างรวดเร็ว."
คุณรีบเข้าไปข้างในตาดกลัว เกิดอะไรขึ้นในโลกนี้? เกิดอะไรขึ้นที่ SO ข้างในคุณสังเกตว่าโปรแกรมเมอร์อีก 99 คนกำลังจ้องหน้าจออย่างตั้งใจพิมพ์ คุณนั่งที่เหลือและได้รับการต้อนรับด้วยข้อความต่อไปนี้:
สวัสดีโปรแกรมเมอร์! ดูเหมือนว่าเราจะพบปัญหา ดังนั้นถูกเจาะโดยที่เราไม่รู้ (โดยส่วนตัวแล้วฉันคิดว่ามันเป็นโปรแกรมเมอร์ Pyth หรือ CJam แต่เฮ้) อย่างไรก็ตามสิ่งที่ได้รับอันตรายทั้งหมดคือบรรณาธิการ Markdown ที่จริงแล้วมันค่อนข้างมาก แต่นั่นคือสิ่งที่คุณเข้ามา
ฉันต้องการให้คุณสร้างโปรแกรม (หรือฟังก์ชั่นพวกเราไม่จู้จี้จุกจิก) ที่จะตีความไฟล์ markdown และแปลงเป็น "SO Beautifier-Arity ใหม่ของเรา รูปแบบ -Decomposer "(aka" SOBAD ") คุณต้องทำสิ่งนี้ในจำนวนไบต์ที่สั้นที่สุด - เรากำลังทำงานในระดับต่ำจนกว่าเราจะแก้ไขปัญหาการแฮ็คนี้ ขอบคุณสำหรับเวลาของคุณและขอให้โชคดี!
ด้วยความนับถือ
Maker of Stack Overflow
วัตถุประสงค์ให้ไฟล์ markdown ที่ถูกต้องเป็นอินพุตของการส่งของคุณดำเนินการและส่งออกการแปลงต่อไปนี้ในอินพุต:
(เมื่อฉันใช้+สัญลักษณ์ฉันหมายถึงตัวดำเนินการ RegExp "อย่างน้อยหนึ่งอินสแตนซ์ของอักขระก่อนหน้า" ไม่ใช่เครื่องหมายบวกตามตัวอักษร)
- แปลงส่วนหัวระดับ 1 ทั้งหมด (
# ...หรือ...\n=+) เป็น{ ... }โดย...กลายเป็น CAPS ทั้งหมด - แปลงส่วนหัวระดับ 2 ทั้งหมด (
## ...หรือ...\n-+) เป็น{{ ... }}โดยให้ทุกคำเป็นตัวพิมพ์ใหญ่ - แปลงส่วนหัวระดับ 3 ทั้งหมด (
### ...) เป็นตัวพิมพ์เล็ก นั่นคือตัวอักษรทั้งหมด (ตัวพิมพ์เล็กและตัวพิมพ์เล็ก) จะถูกจับคู่กับᴀʙᴄᴅᴇғɢʜɪᴊᴋʟᴍɴᴏᴘǫʀsᴛᴜᴠᴡxʏᴢแฟชั่น - แปลงอินสแตนซ์ตัวหนาทั้งหมด (
**...**) เป็น...โดย...เปลี่ยนเป็น CAPS ทั้งหมด - แปลงอินสแตนซ์ตัวเอียงทั้งหมด (
_..._) เป็น. . .ตำแหน่งที่แทรกช่องว่างระหว่างอักขระแต่ละคู่ - เปลี่ยนรหัสอินสแตนซ์ทั้งหมด (
`...`)< ... >เพื่อ - แปลงอินสแตนซ์ strikethrough ทั้งหมด (
---...---) เป็น-.-.-.-โดยที่-มีการแทรกระหว่างอักขระแต่ละคู่ - เปลี่ยนทุกกรณีรายการลำดับเลข (
N. {a}\nN. {b} ...ซึ่งNตรงกับ regex ไม่[0-9]+) ถึง (1. {a}\n 2. {b}...) - แปลงอินสแตนซ์รายการที่ไม่เรียงลำดับทั้งหมด (
* ...\n* ...... ) เป็น (o ...\n o ...... )
รายละเอียดเพิ่มเติม
- อินสแตนซ์ของส่วนหัวและรายการจะพบได้ที่จุดเริ่มต้นของบรรทัดอย่างไรก็ตามอาจถูกล้อมรอบด้วยจำนวนของช่องว่าง
- จะไม่มีการเชื่อมโยงกรณีเช่น
*a_*a_นี้ไม่ถูกต้องสำหรับมาตรฐานของเราหรือจะอะไรเช่น__a__,*_a_*หรือ_*a*_ปรากฏในการป้อนข้อมูล - ส่วนหัวของ Multiline นั้นถูกต้องถ้าหากว่าs
-หรือ=ตามหลังบรรทัดข้อความโดยตรง - ไม่มีส่วนหัวจะมีเอนทิตี markdown อื่น ๆ เช่น
# `code` snippetไม่ใช่ข้อมูลที่ถูกต้องสำหรับวัตถุประสงค์ของเรา - คุณไม่จำเป็นต้องอธิบายส่วนหัวระดับ 4+
- คุณไม่จำเป็นที่จะรักษาพื้นที่ส่วนเกิน (เช่น
> 1ช่องว่าง) ในไฟล์ดังนั้นจึงมีการตกลงที่จะมีการ**hello there**ที่จะกลายเป็นแต่ไม่**hello there****hellothere**ในทำนองเดียวกันการเว้นวรรคต่อท้ายและนำที่พบในบรรทัดไม่จำเป็นต้องรักษา - จะไม่มีแท็บเลเตอร์ในอินพุต
- จะไม่มีการซ้อนรัง ตัวอย่างเช่น
***...***จะไม่เกิดขึ้น - ช่องว่างจะตามด้วยสัญลักษณ์แสดงหัวข้อย่อย (เช่น
* ...ไม่ใช่*...) - รายการในรายการที่เรียงลำดับและไม่เรียงลำดับจะประกอบด้วยบรรทัดเดียวเสมอ
- คู่อักขระที่ไม่ตรงกันควรถูกละเว้น เช่น
** coolและ`java::defควรจะยังคงเหมือนเดิม
วิธีการป้อนข้อมูล
อินพุตต้องเป็นหนึ่งในสิ่งต่อไปนี้:
- อาร์เรย์ / tuple / list / ฯลฯ ของสตริง
- หรือสตริงที่มีการขึ้นบรรทัดใหม่เพื่อแยกบรรทัด
ใช้ภาษาที่ใกล้เคียงที่สุดกับประเภทข้อมูลข้างต้นหากภาษาของคุณไม่รองรับ (เช่น TI-BASIC ไม่สนับสนุน (1. ) …ไม่ใช่ว่า TI-BASIC สามารถแข่งขันได้อย่างไรก็ตาม: P)
กรณีทดสอบ
}หมายถึงการป้อนข้อมูลและบรรทัดถัดไปหมายเอาท์พุท หลาย}บรรทัดมีความหมายว่าบรรทัดที่คั่นด้วยข้อความขึ้นบรรทัดใหม่
} 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 --
โบนัส
- -19 ไบต์หากคุณรองรับการหลีกเลี่ยงอักขระ (เพื่อให้ถือว่าเป็น "ปกติ"); คุณอาจจะเลือกตัวหนีใด ๆ แต่ผมขอแนะนำให้หรือ
\^โปรดทราบว่าระบบการหลบหนีในเว็บไซต์ SO นั้นแตกต่างจากสิ่งที่ฉันแนะนำ (และซับซ้อนกว่า) ดังนั้นอย่าทำ! ดังนั้นจะถือว่า`\`เป็น\แต่ผมจะต้องการให้คุณในการรักษาที่สอง`เป็นแล้วปกตินิสัยและแทนที่จะตรงกับต่อไป`ของตัวละคร
***word***กลายเป็น* * w o r d * *หลังจากที่คุณใช้การแปลงตัวเอียงและทันใดนั้นการแปลงตัวหนาจะใช้ไม่ได้ ยังไม่ชัดเจนว่าจะจัดการเรื่องนี้อย่างไร